Bonjour
J'ai une page client, qui lance l'exécution d'un script sur une page du serveur, et j'aimerais obtenir, disons toutes les demi secondes, le statut (% ou équivalent) de l'exécution de ce script. Un peu comme du multithreading, sauf qu'on n'est pas en C++ ici, oh !
Alors voilà l'idée :
client.php :
server.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
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
48
49
50
51
52
53
54
55 <?php session_start(); $_SESSION["progress"] = 0; ?> <!DOCTYPE html> <html> <head> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> </head> <body> <script type="text/javascript" charset="utf-8"> var status = 0; function show_progress_bar() { $.ajax({ url:'server.php', }); setInterval(function() { $.ajax({ url:'status.php', success:function(response) { console.log('result : ' + response); } }); }, 500); } show_progress_bar(); </script> </body> </html>>
et status.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?php for ($i=0; $i<1; $i+=0.1) { session_start(); $_SESSION["progress"] = $i; session_write_close(); sleep(1); } ?>
Ca marche à peu près
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php session_start(); echo $_SESSION["progress"]; session_write_close(); ?>
Sauf que quand je recharge la page, c'est comme s'il n'avait pas compris qu'il fallait redémarrer une session, en tous cas j'ai l'impression que le script de server.php tourne toujours, exemple d'output :
result : 0.7 client.php:53:26
result : 0.8 client.php:53:26
result : 0.9 client.php:53:26
result : 1 client.php:53:26
result : 0.4 client.php:53:26
result : 0.5 client.php:53:26
Comment empêcher cela ?
Merciiii
Partager