Heim >Backend-Entwicklung >PHP-Problem >Detaillierte Erklärung von pcntl_fork in PHP

Detaillierte Erklärung von pcntl_fork in PHP

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-05-12 17:37:352143Durchsuche

Dieser Artikel stellt Ihnen „pcntl_fork“ in PHP vor. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Detaillierte Erklärung von pcntl_fork in PHP

Die Funktion pcntl_fork() ist die Funktion, die zum Erstellen eines Prozesses im Modul php-pcntl verwendet wird. (Windows wird nicht unterstützt)

Was die Installation und Aktivierung der Erweiterung php_pcntl betrifft, werde ich sie hier nicht vorstellen, sondern nur die Funktion pcntl_fork() selbst analysieren.

$one = 123;
$one++;
$two = time();
$pid = [];
$pid = pcntl_fork();
$three = time();

Wenn die Funktion pcntl_fork() ausgeführt wird, wird ein untergeordneter Prozess erstellt. Der untergeordnete Prozess kopiert alles über den aktuellen Prozess, also den übergeordneten Prozess: Daten, Code und Status.

Wenn pcntl_fork() erfolgreich einen untergeordneten Prozess erstellt, wird die Nummer des untergeordneten Prozesses im übergeordneten Prozess zurückgegeben, 0 wird im untergeordneten Prozess zurückgegeben und -1 wird im Fehlerfall zurückgegeben.

Der untergeordnete Prozess kopiert den Code und Daten des übergeordneten Prozesses. Dann bedeutet das: Der Code und die Daten, die den untergeordneten und übergeordneten Prozessen gehören, sind genau gleich.

Wichtiger Punkt: Der untergeordnete Prozess kopiert den Status des übergeordneten Prozesses, daher gibt es den obigen Beispielcode: Wenn pcntl_fork in der fünften Zeile ausgeführt wird, wird dies auch der Code des erstellten untergeordneten Prozesses sein ab der fünften Zeile ausgeführt. Der untergeordnete Prozess hat die Daten und den Code kopiert. Daher gibt es im Unterprozess auf die gleiche Weise Variablen wie $eins, $zwei usw.

for ($i = 0; $i < 3; $i++) {
    $pid = pcntl_fork();
}
sleep(30);

Also: Wie viele Unterprozesse werden tatsächlich durch die obige for-Schleife generiert? Die Antwort ist 7. Unter Linux können Sie den Befehl ps verwenden, um 8 Prozesse anzuzeigen (1 übergeordneter Prozess, 7 untergeordnete Prozesse)

Grund: Der übergeordnete Prozess erstellt einen untergeordneten Prozess 0, wenn i = 0. Zu diesem Zeitpunkt Der untergeordnete Prozess wird die Schleife weiterhin ausführen. Erstellen Sie Ihren eigenen untergeordneten Prozess. Auf die gleiche Weise: Wenn i = 0, wird ein untergeordneter Prozess 0 erstellt. Zu diesem Zeitpunkt führt der untergeordnete Prozess die Schleife weiter aus. Erstellen Sie Ihren eigenen untergeordneten Prozess. Auf die gleiche Weise: Wenn i = 0, wird ein untergeordneter Prozess 0 erstellt. Zu diesem Zeitpunkt führt der untergeordnete Prozess die Schleife weiter aus. Erstellen Sie Ihren eigenen untergeordneten Prozess. Auf die gleiche Weise: Dies wird auch passieren, wenn i=1...

Empfohlenes Lernen: php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung von pcntl_fork in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen