Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Echtzeitausgaben von laufenden Prozessen in PHP erhalten?

Wie kann ich Echtzeitausgaben von laufenden Prozessen in PHP erhalten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-14 02:56:10797Durchsuche

How Can I Get Real-Time Output from Running Processes in PHP?

Echtzeitausgabe von laufenden Prozessen in PHP

In der Webentwicklung ist es oft notwendig, Prozesse auf dem Server auszuführen und anzuzeigen Ausgabe an den Client in Echtzeit. Diese Funktionalität ist entscheidend für Aufgaben wie die Überwachung von Systemressourcen, das Sammeln von Protokollen oder die Integration mit externen Tools.

Befehle mit Echtzeitausgabe ausführen

Um einen Prozess auszuführen Um die Ausgabe in PHP zu erfassen, können Sie die Funktion proc_open() verwenden. Mit dieser Funktion können Sie den Befehl, Eingabe-/Ausgabestreams und andere Optionen zum Ausführen des Prozesses angeben. Das folgende Beispiel zeigt, wie man proc_open() verwendet, um den Befehl „ping“ auszuführen und seine Ausgabe zu streamen:

$cmd = "ping 127.0.0.1";

$descriptorspec = array(
   0 => array("pipe", "r"),   // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),   // stdout is a pipe that the child will write to
   2 => array("pipe", "w")    // stderr is a pipe that the child will write to
);
flush();
$process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array());
echo "<pre class="brush:php;toolbar:false">";
if (is_resource($process)) {
    while ($s = fgets($pipes[1])) {
        print $s;
        flush();
    }
}
echo "
";

In diesem Skript wird der Befehl „ping“ ausgeführt und seine Standardausgabe wird an a umgeleitet Rohr. Die Schleife liest kontinuierlich aus der Pipe und druckt die Ausgabe auf der Webseite.

Beenden von Echtzeitprozessen

Wenn eine Seite geladen wird, wird der „Ping“-Prozess ausgeführt wird gestartet und läuft weiter, bis die Seite geschlossen wird. Um den Prozess beim Entladen der Seite ordnungsgemäß zu beenden, können Sie die Funktion proc_terminate() verwenden:

proc_terminate($process);

Diese Funktion sendet ein Signal an den Prozess, um seine Ausführung zu beenden.

Das obige ist der detaillierte Inhalt vonWie kann ich Echtzeitausgaben von laufenden Prozessen 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