Maison >développement back-end >tutoriel php >Comment puis-je obtenir une sortie de processus en temps réel et tuer gracieusement des processus en PHP ?

Comment puis-je obtenir une sortie de processus en temps réel et tuer gracieusement des processus en PHP ?

DDD
DDDoriginal
2024-12-19 17:28:14606parcourir

How Can I Get Real-Time Process Output and Gracefully Kill Processes in PHP?

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!

Déclaration:
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