Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Live-Updates von der PHP-Shell-Befehlsausführung erhalten?

Wie kann ich Live-Updates von der PHP-Shell-Befehlsausführung erhalten?

DDD
DDDOriginal
2024-12-01 04:36:16869Durchsuche

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

PHP-Shell-Ausgabe mit Live-Updates

PHP bietet mehrere Funktionen zum Ausführen von Shell-Befehlen, einschließlich Shell_exec, Exec, System und Durchgang. Diese Funktionen warten jedoch normalerweise, bis der Befehl abgeschlossen ist, bevor sie die Ergebnisse anzeigen. Wenn Sie die Live-Ausgabe des Befehls während der Ausführung anzeigen möchten, ziehen Sie die folgenden Alternativen in Betracht:

Option 1: Verwendung von popen() für die parallele Ausführung

Die Funktion popen() öffnet eine Pipe zwischen Ihrem PHP-Skript und einem separaten Prozess, der den Shell-Befehl ausführt. Dadurch kann Ihr Skript mit dem Prozess interagieren und seine Ausgabe in Echtzeit lesen.

<?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 '
'; ?>

Dieser Code führt den Ping-Befehl aus und zeigt seine Ausgabe an, sobald sie verfügbar ist.

Option 2: Verwendung von passhru() für die Live-Ausgabe

Die Funktion passhru() sendet die Ausgabe des Befehls direkt an den Browser des Benutzers, sodass Sie um die Live-Updates zu überspringen und die Ergebnisse sofort anzuzeigen.

<?php
echo '<pre class="brush:php;toolbar:false">';
passthru($cmd);
echo '
'; ?>

Optimierungstipps:

  • Deaktivieren Sie die Sitzungspufferung, indem Sie session_write_close() aufrufen, um dies zu verhindern es verhindert, dass die parallele Ausführung beeinträchtigt wird.
  • Setzen Sie den Header „X-Accel-Buffering: no“, wenn sich Ihr Server hinter einem befindet Nginx-Gateway, um zu verhindern, dass Nginx die Live-Ausgabe stört.

Durch die Verwendung dieser Techniken können Sie Live-Updates der Shell-Befehlsausgabe in Ihren PHP-Skripten ermöglichen, das Benutzererlebnis verbessern und Echtzeit-Einblicke liefern die Ausführung des Befehls.

Das obige ist der detaillierte Inhalt vonWie kann ich Live-Updates von der PHP-Shell-Befehlsausführung 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