Délai maxi pour obtention réponse à HTMLrequest
Posté : 22 juil. 2008, 10:18
Bonjour,
Il semblerait qu'il existe un délai maximum pour obtenir la réponse à une HTMLrequest, mais je ne sais pas quel est ce délai et surtout s'il existe une méthode pour contourner ce problème…
Voici un exemple pour illustrer mon problème :
Fichier test.html :
Fichier boucle.php :
Si je mets un nombre faible d'itérations (10 par exemple) dans le script boucle.php, là, pas de problème.
Par contre, si je mets un nombre plus élevé d'itérations (120 par ex), je me retrouve avec ce message dans mon div "reponse" :
Si vous avez des pistes pour contourner ce problème, je suis preneur !!!
Il semblerait qu'il existe un délai maximum pour obtenir la réponse à une HTMLrequest, mais je ne sais pas quel est ce délai et surtout s'il existe une méthode pour contourner ce problème…
Voici un exemple pour illustrer mon problème :
Fichier test.html :
Code : Tout sélectionner
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>test</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="-1">
<meta name="robots" content="index,nofollow">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript">
function test()
{
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
var reponse= xhr_object.responseText;
document.getElementById("reponse").innerHTML=reponse;
}
}
xhr_object.open("GET","boucle.php",true);
xhr_object.send();
}
</script>
</head>
<body>
<div id="reponse" style="border: 1px solid black; height:10px;"></div>
<input type="button" value="start" onclick="test()" />
</body>
</html>
Code : Tout sélectionner
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
@set_time_limit(0);
$nb_iter=120; // nombre d'itérations
for ($i=0; $i<$nb_iter; $i++) {
echo "boucle $i\n";
sleep (1);
}
$fp=fopen("reponse.txt","w");
fwrite($fp,"Nb itérations : $i");
fclose($fp);
echo "Fin";
?>
Si je mets un nombre faible d'itérations (10 par exemple) dans le script boucle.php, là, pas de problème.
Par contre, si je mets un nombre plus élevé d'itérations (120 par ex), je me retrouve avec ce message dans mon div "reponse" :
Par contre, l'execution du script php continue bien car j'ai bien "Nb itérations : 120" dans mon fichier reponse.txt !!Network Error (tcp_error)
A communication error occurred: ""
The Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests. You may wish to try again at a later time.
Si vous avez des pistes pour contourner ce problème, je suis preneur !!!