Echtzeitausgabe mit der Shell-Ausführung von PHP
Die Shell-Ausführung in PHP mit Funktionen wie „shell_exec“ und „exec“ kann für die Interaktion mit nützlich sein das Betriebssystem. Standardmäßig zeigen diese Funktionen jedoch die gesamte Ausgabe erst an, nachdem der Befehl abgeschlossen wurde. Dies schränkt die Möglichkeit ein, den Fortschritt zu überwachen oder Aktualisierungen in Echtzeit anzuzeigen.
Lösung: Entfesseln der Live-Ausgabe
Um eine Ausgabeanzeige in Echtzeit zu erreichen, bietet PHP zwei primäre Möglichkeiten Optionen:
popen() für Parallel Interaktion:
popen() ermöglicht Ihnen die Einrichtung eines bidirektionalen Kommunikationskanals mit einem untergeordneten Prozess. Dadurch können Sie den untergeordneten Prozess lesen und schreiben, als wäre er eine Datei. Durch die Verwendung einer Schleife und fread() können Sie die Ausgabe erfassen und dynamisch anzeigen.
passthru() für Direktausgabe:
Für einen einfacheren Ansatz kann passhru() verwendet werden, um die Ausgabe eines Befehls direkt an den Browser zu drucken. Es bietet eine bequeme Möglichkeit, die Ergebnisse ohne Zwischenspeicherung zu streamen.
Codebeispiel mit 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);
Hinweis:
Das obige ist der detaillierte Inhalt vonWie kann ich eine Echtzeitausgabe von Shell-Befehlen in PHP erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!