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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
<!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>
Fichier boucle.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?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=60;  // nombre d'itérations
for ($i=0; $i<$nb_iter; $i++) {
	echo "boucle $i\n";
	sleep (1);
}
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" :
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.
Vous aurez bien compris, vu l'utilité d'un tel script, il ne s'agit là que d'un exemple... En réalité, je souhaite lancer l'upload via FTP de fichiers de taille importante (100 Mo et plus) via ajax