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
Libérer: 2024-12-19 17:28:14
original
605 Les gens l'ont consulté

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

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

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal