Sortie en temps réel des processus en cours d'exécution en PHP
Dans le développement Web, il est souvent nécessaire d'exécuter des processus sur le serveur et d'afficher leurs sortie vers le client en temps réel. Cette fonctionnalité est cruciale pour des tâches telles que la surveillance des ressources du système, la collecte de journaux ou l'intégration avec des outils externes.
Exécuter des commandes avec sortie en temps réel
Pour exécuter un processus et capturez sa sortie en PHP, vous pouvez utiliser la fonction proc_open(). Cette fonction vous permet de spécifier la commande, les flux d'entrée/sortie et d'autres options pour exécuter le processus. L'exemple suivant montre comment utiliser proc_open() pour exécuter la commande 'ping' et diffuser sa sortie :
$cmd = "ping 127.0.0.1"; $descriptorspec = array( 0 => array("pipe", "r"), // stdin is a pipe that the child will read from 1 => array("pipe", "w"), // stdout is a pipe that the child will write to 2 => array("pipe", "w") // stderr is a pipe that the child will write to ); flush(); $process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array()); echo "<pre class="brush:php;toolbar:false">"; if (is_resource($process)) { while ($s = fgets($pipes[1])) { print $s; flush(); } } echo "";
Dans ce script, la commande 'ping' est exécutée et sa sortie standard est redirigée vers un tuyau. La boucle lit en continu à partir du canal et imprime le résultat sur la page Web.
Terminaison des processus en temps réel
Lorsqu'une page est chargée, le processus « ping » est démarré et continue de s'exécuter jusqu'à la fermeture de la page. Pour terminer correctement le processus lorsque la page est déchargée, vous pouvez utiliser la fonction proc_terminate() :
proc_terminate($process);
Cette fonction enverra un signal au processus pour terminer son exécution.
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!