Sortie de processus en temps réel en PHP
L'exécution de processus qui génèrent une sortie en temps réel sur une page Web peut améliorer l'expérience utilisateur et fournir des retour. En PHP, il est possible d'y parvenir en utilisant la fonction proc_open().
Obtention d'une sortie en temps réel
Pour obtenir une sortie en temps réel d'un processus, utilisez proc_open () comme suit :
$cmd = "ping 127.0.0.1"; $descriptorspec = array( 0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w") ); $process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array()); // Display output echo "<pre class="brush:php;toolbar:false">"; if (is_resource($process)) { while ($s = fgets($pipes[1])) { print $s; flush(); } } echo "";
Dans ce code, la sortie du processus ping est lue en continu à partir du canal $pipes[1] et affiché.
Tuer le processus à la sortie de la page
Pour arrêter un processus à la sortie d'une page, utilisez le code suivant :
register_shutdown_function(function() use ($process) { proc_terminate($process); // Wait for process to terminate gracefully proc_close($process); });
Ce code enregistre une fonction d'arrêt qui termine un processus à la fin du script. Il attend également gracieusement la fin du processus avant de le fermer.
En tirant parti de proc_open() et register_shutdown_function(), vous pouvez exécuter des processus et obtenir leur sortie en temps réel en PHP. Lorsque la page se ferme, le processus est automatiquement terminé pour empêcher toute ressource système persistante.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!