J'ai écrit un seul fichier AJAX testeur. Profitez-en!!!
Juste parce que j'ai eu des problèmes avec mon fournisseur d'hébergement
<?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>
Edit:
r signifie rangée et w temps d'attente.
Lorsque vous appuyez sur le bouton démarrer de 80 (ou tout autre nombre) concomitante à une requête ajax sont lancés par javascript, mais comme on le sait qu'ils sont transmis par le navigateur. Ils sont aussi demandé au serveur en parallèle (limité à un certain nombre, c'est le fait de cette question). Ici les demandes sont résolus côté serveur avec un délai aléatoire (établi par w). À l'heure de début tout le temps nécessaire pour résoudre tous les appels ajax est calculé. Lorsque le test est terminé, vous pouvez voir si il a pris la moitié, a pris la troisième, a pris un quart, etc du temps total, déduction faite de ce qui a été le parallélisme sur les appels vers le serveur. Ce n'est pas stricte, ni précis, mais il est agréable de voir en temps réel comment ajaxs appels sont terminés (voir la croix entrants). Et est très simple d'auto contient un script pour afficher ajax de base.
Bien sûr, cela suppose que côté serveur n'est pas l'introduction supplémentaire de la limite.
Utilisez de préférence en conjonction avec firebug net (ou de votre navigateur équivalent)