Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich eine Live-Ausgabe von Shell-Befehlen in PHP erhalten?
Zugriff auf Live-Ausgaben über PHP mit Shell-Befehlen
Die Shell_exec-Funktion von PHP bietet eine praktische Möglichkeit, Shell-Befehle aus PHP-Skripten heraus auszuführen. Allerdings kann es schwierig sein, die Live-Ausgabe dieser Befehle zur Laufzeit abzurufen. In diesem Artikel werden zwei Methoden zum Erreichen dieser Funktionalität untersucht.
popen() und Interaktivität
Um mit dem Prozess zu interagieren und seine Ausgabe während der Ausführung zu lesen, verwenden Sie popen() . Diese Funktion gibt einen Dateizeiger zurück, der wie jede andere Dateiressource behandelt werden kann.
$proc = popen($cmd, 'r'); echo '<pre class="brush:php;toolbar:false">'; while (!feof($proc)) { echo fread($proc, 4096); @flush(); } echo '';
Dieses Skript startet den Befehl, liest seine Ausgabe in Blöcken von 4096 Bytes und druckt sie direkt auf der Seite. Der Aufruf von „flush()“ stellt sicher, dass die Ausgabe sofort angezeigt wird.
Komfort mit passhru()
Wenn keine Live-Interaktivität erforderlich ist, bietet passhru() einen alternativen Ansatz. Diese Funktion gibt die Ausgabe eines Befehls direkt an die Seite zurück.
echo '<pre class="brush:php;toolbar:false">'; passthru($cmd); echo '';
Passthru() ist zwar einfacher, gibt aber das gesamte Befehlsergebnis auf einmal aus, was möglicherweise nicht für Befehle geeignet ist, die eine große Menge generieren der Ausgabe.
Fazit
Sowohl popen() als auch passhru() bieten unterschiedliche Mechanismen für den Zugriff Live-Ausgabe von Shell-Befehlen in PHP. popen() bietet eine differenzierte Kontrolle über den Datenabruf und ermöglicht Aktualisierungen in Echtzeit. passhru() hingegen opfert Interaktivität zugunsten der Benutzerfreundlichkeit und eignet sich daher für Szenarien, in denen eine sofortige Ausgabe gewünscht ist.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Live-Ausgabe von Shell-Befehlen in PHP erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!