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 :
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 <?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() ; ?>
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
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>
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.
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() ; ?>
J'espère que vous aurez compris mon problème.
Partager