Tôi đã viết một tệp thử nghiệm AJAX duy nhất. Tận hưởng đi !!! Chỉ vì tôi gặp vấn đề với nhà cung cấp dịch vụ lưu trữ của mình
<?php /*
Author: Luis Siquot
Purpose: Check ajax performance and errors
License: GPL
site5: Please don't drop json requests (nor delay)!!!!
*/
$r = (int)$_GET['r'];
$w = (int)$_GET['w'];
if($r) {
sleep($w);
echo json_encode($_GET);
die ();
} //else
?><head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
var _settimer;
var _timer;
var _waiting;
$(function(){
clearTable();
$('#boton').bind('click', donow);
})
function donow(){
var w;
var estim = 0;
_waiting = $('#total')[0].value * 1;
clearTable();
for(var r=1;r<=_waiting;r++){
w = Math.floor(Math.random()*6)+2;
estim += w;
dodebug({r:r, w:w});
$.ajax({url: '<?php echo $_SERVER['SCRIPT_NAME']; ?>',
data: {r:r, w:w},
dataType: 'json', // 'html',
type: 'GET',
success: function(CBdata, status) {
CBdebug(CBdata);
}
});
}
doStat(estim);
timer(estim+10);
}
function doStat(what){
$('#stat').replaceWith(
'<table border="0" id="stat"><tr><td>Request Time Sum=<th>'+what+
'<td> /2=<th>'+Math.ceil(what/2)+
'<td> /3=<th>'+Math.ceil(what/3)+
'<td> /4=<th>'+Math.ceil(what/4)+
'<td> /6=<th>'+Math.ceil(what/6)+
'<td> /8=<th>'+Math.ceil(what/8)+
'<td> (seconds)</table>'
);
}
function timer(what){
if(what) {_timer = 0; _settimer = what;}
if(_waiting==0) {
$('#showTimer')[0].innerHTML = 'completed in <b>' + _timer + ' seconds</b> (aprox)';
return ;
}
if(_timer<_settimer){
$('#showTimer')[0].innerHTML = _timer;
setTimeout("timer()",1000);
_timer++;
return;
}
$('#showTimer')[0].innerHTML = '<b>don\'t wait any more!!!</b>';
}
function CBdebug(what){
_waiting--;
$('#req'+what.r)[0].innerHTML = 'x';
}
function dodebug(what){
var tt = '<tr><td>' + what.r + '<td>' + what.w + '<td id=req' + what.r + '> '
$('#debug').append(tt);
}
function clearTable(){
$('#debug').replaceWith('<table border="1" id="debug"><tr><td>Request #<td>Wait Time<td>Done</table>');
}
</script>
</head>
<body>
<center>
<input type="button" value="start" id="boton">
<input type="text" value="80" id="total" size="2"> concurrent json requests
<table id="stat"><tr><td> </table>
Elapsed Time: <span id="showTimer"></span>
<table id="debug"></table>
</center>
</body>
Chỉnh sửa:
Tất nhiên, điều này giả định, phía máy chủ không đưa ra bất kỳ giới hạn bổ sung nào.
Tốt nhất là sử dụng kết hợp với bảng điều khiển net firebird (hoặc tương đương trình duyệt của bạn)
r có nghĩa là hàng và thời gian chờ đợi.
Khi ban đầu bạn nhấn nút bắt đầu 80 (hoặc bất kỳ số nào khác) của yêu cầu ajax đồng thời được khởi chạy bằng javascript, nhưng như đã biết, chúng được trình duyệt lưu lại. Ngoài ra, chúng được yêu cầu đến máy chủ song song (giới hạn số lượng nhất định, đây là thực tế của câu hỏi này). Ở đây các yêu cầu được giải quyết phía máy chủ với độ trễ ngẫu nhiên (được thiết lập bởi w). Tại thời điểm bắt đầu, tất cả thời gian cần thiết để giải quyết tất cả các cuộc gọi ajax được tính toán. Khi kiểm tra kết thúc, bạn có thể xem nếu mất một nửa, mất thứ ba, mất một phần tư, v.v. trong tổng thời gian, trừ đi sự song song trên các cuộc gọi đến máy chủ. Điều này không nghiêm ngặt, cũng không chính xác, nhưng thật tuyệt khi thấy trong thời gian thực các cuộc gọi ajaxs được hoàn thành như thế nào (nhìn thấy đường chéo đến). Và là một kịch bản tự chứa rất đơn giản để hiển thị cơ bản ajax.