Bonjour,

J'ai un script qui s’exécute toute les 3 secondes avec un sleep(3) dans une boucle et à chaque appel du script je modifie une valeur dans la base de donnée.

Ensuite dans une autre page, j'effectue une requête AJAX toute les 3 secondes pour récupérer cette valeur dans la base et l'afficher.

Cependant la requête AJAX me renvois la valeur une fois que le script est fini (qu'il est sorti de la boucle).

Désolé si c'est pas claire, voici le code :

La page qui éxécute le script périodiquement :
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
 
<?php
 
session_start() ;
require ('include/fonctions.php') ;
 
ignore_user_abort(true);
set_time_limit(0);
 
mysql_connect("localhost", "root", "") ;
mysql_select_db("test") ;
 
$i = 1 ;
while($i <= 5)
{
 
	$sql = "UPDATE `test` SET test_point = '".$i."' WHERE test_id = '1'" ;
	$result = mysql_query($sql) ;
	$i++ ;
	sleep(3) ;
}
 
mysql_close() ;
 
?>
La page qui appèle la requête AJAX :
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
44
45
46
47
 
<?php
 
session_start() ;
 
?>
 
<script type="text/javascript">
function request(callback) 
{
	var xhr = getXMLHttpRequest() ;
 
	xhr.onreadystatechange = function() 
	{
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) 
		{
			callback(xhr.responseText);
		} 
	};
 
	xhr.open("GET", "ajaxTest.php", true);
	xhr.send(null);
}
 
function readData(sData)
{
	document.getElementById("modifVal").innerHTML = sData ;
}
 
function refreshVal(timer)
{
	request(readData) ;
	setInterval("envoi();", timer) ;
}
 
function envoi()
{
	request(readData) ;
}
</script>
<script type="text/javascript" src="js/oXHR.js"></script>
 
<h1 align="center">Test</h1>
<div align="center" id="modifVal" style="color:blue;font-size:25px;">0</div>
<div align="center" style="padding:10px;">
        <button onClick="refreshVal(3000)">Debut</button>
</div>
Et enfin la requête AJAX :
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
 
<?php
 
session_start() ;
 
header("Content-Type: text/plain");
 
mysql_connect("localhost", "root", "") ;
mysql_select_db("test") ;
 
$sql = "SELECT * FROM `test` WHERE test_id = '1'" ;
$result = mysql_query($sql) ;
$row = mysql_fetch_array($result) ;
 
echo $row['test_point'] ;
 
mysql_close() ;
 
?>
Lorsque je clique sur le bouton "Debut" et que je lance le script, la valeur dans la base est bien modifié mais je vois toujours 0 puis 5 quand le script est fini alors que je voudrais voir 0 puis 3 secondes plus tard 1, puis 2, etc... jusqu’à 5.

J'espère que vous aurez compris mon problème.