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!