Script long sur server php et obtenir son statut (%)
Bonjour :D
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 :
Code:
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>> |
server.php:
Code:
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);
}
?> |
et status.php :
Code:
1 2 3 4 5 6 7 8
| <?php
session_start();
echo $_SESSION["progress"];
session_write_close();
?> |
Ca marche à peu près :)
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