Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich eine Echtzeitausgabe von einem PHP-Prozess erhalten?
Prozess mit Echtzeitausgabe in PHP ausführen
Bei der Ausführung von Prozessen in PHP kann es wünschenswert sein, deren Ausgabe in Echtzeit anzuzeigen. In diesem Artikel wird eine Methode untersucht, um dies mithilfe der Funktion exec() und einer einzigartigen Konfiguration von Deskriptorspezifikationen zu erreichen.
Echtzeit-Ausgabeerfassung
Um die Ausgabe eines Prozesses zu erfassen In Echtzeit müssen die folgenden Deskriptorspezifikationen angegeben werden:
$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 );
Dieses Setup leitet stdin, stdout und stderr um in Pipes, sodass wir mit der Funktion fgets() in Echtzeit aus stdout lesen können.
Beispiel: Ping mit Echtzeitausgabe
Um diese Methode zu demonstrieren, führen wir sie aus der Ping-Befehl mit Echtzeitausgabe:
$cmd = "ping 127.0.0.1"; $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 "";
Dieser Code gibt jede Zeile des Ping-Prozesses aus, sobald sie verfügbar ist, und bietet eine Live-Ansicht des Netzwerkverkehrs.
Prozessbeendigung
Das Beenden von Prozessen, wenn ein Benutzer eine Webseite verlässt, kann eine Herausforderung sein. Bei lang andauernden Prozessen wie Ping kann es sein, dass diese auch nach dem Schließen der Seite weiter ausgeführt werden.
Um dieses Problem zu beheben, kann man die folgenden Techniken anwenden:
Durch die Implementierung dieser Methoden können Entwickler sicherstellen, dass von ihren PHP-Skripten gestartete Prozesse ordnungsgemäß verarbeitet werden wenn ein Benutzer die Seite verlässt.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Echtzeitausgabe von einem PHP-Prozess erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!