Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich eine Live-Ausgabe von Shell-Befehlen in PHP erhalten?

Wie kann ich eine Live-Ausgabe von Shell-Befehlen in PHP erhalten?

DDD
DDDOriginal
2024-12-02 20:17:12665Durchsuche

How Can I Get Live Output from Shell Commands in PHP?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn