Maison > développement back-end > tutoriel php > Comment puis-je obtenir une sortie en temps réel des processus en cours d'exécution en PHP ?

Comment puis-je obtenir une sortie en temps réel des processus en cours d'exécution en PHP ?

Mary-Kate Olsen
Libérer: 2024-12-14 02:56:10
original
797 Les gens l'ont consulté

How Can I Get Real-Time Output from Running Processes in PHP?

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 "
";
Copier après la connexion

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal