Maison > développement back-end > tutoriel php > Comment puis-je obtenir des mises à jour en direct à partir de l'exécution de commandes PHP Shell ?

Comment puis-je obtenir des mises à jour en direct à partir de l'exécution de commandes PHP Shell ?

DDD
Libérer: 2024-12-01 04:36:16
original
811 Les gens l'ont consulté

How Can I Get Live Updates from PHP Shell Command Execution?

Sortie du shell PHP avec mises à jour en direct

PHP fournit plusieurs fonctions pour exécuter des commandes shell, notamment shell_exec, exec, system et passthru. Cependant, ces fonctions attendent généralement que la commande soit terminée avant d'afficher les résultats. Si vous souhaitez afficher la sortie en direct de la commande pendant l'exécution, envisagez les alternatives suivantes :

Option 1 : Utiliser popen() pour l'exécution parallèle

La fonction popen() ouvre un canal entre votre script PHP et un processus distinct exécutant la commande shell. Cela permet à votre script d'interagir avec le processus, en lisant sa sortie en temps réel.

<?php
$cmd = 'ping -c 10 127.0.0.1';
$proc = popen($cmd, 'r');

echo '<pre class="brush:php;toolbar:false">';
while (!feof($proc)) {
    echo fread($proc, 4096);
    flush();
}
echo '
'; ?>
Copier après la connexion

Ce code exécute la commande ping et affiche sa sortie dès qu'elle devient disponible.

Option 2 : Utiliser passthru() pour la sortie en direct

La fonction passthru() envoie directement la sortie de la commande au navigateur de l'utilisateur, vous permettant d'ignorer les mises à jour en direct et d'afficher les résultats au fur et à mesure qu'ils arrivent.

<?php
echo '<pre class="brush:php;toolbar:false">';
passthru($cmd);
echo '
'; ?>
Copier après la connexion

Conseils d'optimisation :

  • Désactivez la mise en mémoire tampon de session en appelant session_write_close() pour l'empêcher d'interférer avec l'exécution parallèle.
  • Définissez l'en-tête "X-Accel-Buffering: no" si votre serveur est derrière un nginx pour empêcher nginx de perturber la sortie en direct.

En utilisant ces techniques, vous pouvez activer les mises à jour en direct de la sortie des commandes shell dans vos scripts PHP, améliorant ainsi l'expérience utilisateur et fournissant des informations en temps réel sur l'exécution de la commande.

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