Maison >développement back-end >tutoriel php >Comment puis-je obtenir une sortie en temps réel des commandes Shell en PHP ?
Sortie en temps réel avec l'exécution du shell de PHP
L'exécution du shell en PHP, à l'aide de fonctions telles que shell_exec et exec, peut être bénéfique pour interagir avec le système d’exploitation. Cependant, par défaut, ces fonctions affichent l'intégralité de la sortie uniquement une fois la commande terminée. Cela limite la possibilité de surveiller les progrès ou d'afficher les mises à jour en temps réel.
Solution : libérer la sortie en direct
Pour obtenir un affichage de sortie en temps réel, PHP propose deux principaux options :
popen() pour Parallèle Interaction :
popen() vous permet d'établir un canal de communication bidirectionnel avec un processus enfant. Cela vous permet de lire et d'écrire sur le processus enfant comme s'il s'agissait d'un fichier. En utilisant une boucle et fread(), vous pouvez capturer la sortie et l'afficher de manière dynamique.
passthru() pour la sortie directe :
Pour une approche plus simple, passthru() peut être utilisé pour imprimer directement le résultat d'une commande sur le navigateur. Il fournit un moyen pratique de diffuser les résultats sans stockage intermédiaire.
Exemple de code utilisant popen() :
// Ensure flushing of output buffers while (@ ob_end_flush()); // Open the child process for reading $proc = popen($cmd, 'r'); echo '<pre class="brush:php;toolbar:false">'; // Keep reading and displaying output until EOF while (!feof($proc)) { echo fread($proc, 4096); flush(); } echo ''; // Close the process pclose($proc);
Remarque :
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!