Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Prozesse mit Echtzeitausgabe in PHP ausführen und verwalten?
Prozesse mit Echtzeitausgabe in PHP ausführen
Das Ausführen von Prozessen auf Webseiten, die eine Echtzeitausgabe bereitstellen, kann eine wertvolle Funktion sein. Beispielsweise kann die Ausführung des „Ping“-Prozesses und die zeilenweise Erfassung seiner Ausgabe das Benutzererlebnis verbessern. Um dies in PHP zu erreichen, sollten Sie den folgenden Ansatz in Betracht ziehen:
Um einen Prozess mit Echtzeitausgabe auszuführen, können Sie proc_open() verwenden. Hier ist ein Beispiel:
$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 Beispiel wird proc_open() verwendet, um den Befehl „ping 127.0.0.1“ auszuführen und seine Ausgabe in Echtzeit zu erfassen. Das Array descriptorspec definiert die Dateideskriptoren für den Prozess. Konkret legt es stdin als Pipe fest, aus der der untergeordnete Prozess lesen kann, stdout als Pipe, in die der untergeordnete Prozess schreiben soll, und stderr als Pipe, in die der untergeordnete Prozess schreiben soll.
flush() wird verwendet, um sicherzustellen, dass alle Ausgaben des untergeordneten Prozesses sofort angezeigt werden. is_resource($process) prüft, ob der untergeordnete Prozess noch läuft. Die while-Schleife liest kontinuierlich die Ausgabe aus der stdout-Pipe des untergeordneten Prozesses und gibt sie auf der Webseite aus, sodass Sie die Ping-Ergebnisse in Echtzeit sehen können.
Laufende Prozesse beenden
Um den untergeordneten Prozess abzubrechen, wenn ein Benutzer die Seite verlässt, können Sie proc_terminate() verwenden. Für den „Ping“-Vorgang können Sie den folgenden Code verwenden:
proc_terminate($process); ?>
Dadurch wird der Ping-Vorgang beendet und seine weitere Ausführung verhindert.
Das obige ist der detaillierte Inhalt vonWie kann ich Prozesse mit Echtzeitausgabe in PHP ausführen und verwalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!