Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Echtzeit-PHP-Prozesse ausführen und beenden?

Wie kann ich Echtzeit-PHP-Prozesse ausführen und beenden?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-05 08:26:11663Durchsuche

How to Execute and Terminate Realtime PHP Processes?

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!

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