He escrito un solo archivo de prueba AJAX. ¡¡¡Disfrútala!!! Solo porque he tenido problemas con mi proveedor de alojamiento
<?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>
Editar:
r significa fila yw tiempo de espera.
Cuando presiona inicialmente el botón de inicio 80 (o cualquier otro número) de la solicitud simultánea de ajax se inicia mediante javascript, pero como se sabe, el navegador los pone en cola. También se solicitan al servidor en paralelo (limitado a cierto número, este es el hecho de esta pregunta). Aquí las solicitudes se resuelven del lado del servidor con un retraso aleatorio (establecido por w). Al inicio se calcula todo el tiempo necesario para resolver todas las llamadas ajax. Cuando finaliza la prueba, puede ver si tomó la mitad, la tercera, la cuarta parte, etc. del tiempo total, deduciendo cuál fue el paralelismo en las llamadas al servidor. Esto no es estricto ni preciso, pero es agradable ver en tiempo real cómo se completan las llamadas ajaxs (ver el cruce entrante). Y es un script autónomo muy simple para mostrar los conceptos básicos de ajax.
Por supuesto, esto supone que el lado del servidor no está introduciendo ningún límite adicional.
Preferiblemente use en conjunto con el panel de red firebug (o el equivalente de su navegador)