Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Echtzeit-PHP-Prozesse ausführen und beenden?
Prozessausführung und -beendigung in PHP in Echtzeit
Diese Frage untersucht, wie man einen Prozess auf einer Webseite ausführt und seine Ausgabe in Echtzeit erhält , sodass nicht mehr gewartet werden muss, bis der Vorgang abgeschlossen ist. Im zweiten Teil der Frage geht es darum, wie man solche Prozesse beendet, wenn ein Benutzer die Seite verlässt.
Eine Methode zum Ausführen von Prozessen in PHP und zum Streamen ihrer Ausgabe ist die Funktion proc_open(). Diese Funktion ermöglicht die Erstellung eines untergeordneten Prozesses, der unabhängig vom übergeordneten PHP-Prozess ausgeführt werden kann. Um die Echtzeitausgabe zu erleichtern, können Sie den Parameter $descriptorspec mit entsprechenden Dateideskriptoren angeben, um die stdout- und stderr-Streams des Prozesses zu erfassen.
$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());
Sobald der untergeordnete Prozess erstellt wurde, können Sie eine kontinuierliche Schleife verwenden Lesen Sie aus der stdout-Pipe und drucken Sie die Ausgabe.
echo "<pre class="brush:php;toolbar:false">"; if (is_resource($process)) { while ($s = fgets($pipes[1])) { print $s; flush(); } } echo "";
Um den untergeordneten Prozess zu beenden, wenn der Benutzer die Seite verlässt, können Sie ein PHP-Shutdown verwenden Funktion. Shutdown-Funktionen werden ausgeführt, wenn das PHP-Skript beendet wird, was passieren kann, wenn ein Benutzer einen Browser-Tab schließt oder die Seite verlässt. In der Shutdown-Funktion können Sie proc_close() für das Handle des untergeordneten Prozesses aufrufen, um ihn zu beenden.
register_shutdown_function(function() { proc_close($process); });
Das obige ist der detaillierte Inhalt vonWie kann ich Echtzeit-PHP-Prozesse ausführen und beenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!