Heim  >  Artikel  >  Backend-Entwicklung  >  Welche Funktion hat pcntl_fork in PHP?

Welche Funktion hat pcntl_fork in PHP?

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-05-20 17:39:212112Durchsuche

Dieser Artikel stellt Ihnen die Rolle von 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.

Welche Funktion hat 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.

1. Wenn pcntl_fork() erfolgreich einen untergeordneten Prozess erstellt, wird die untergeordnete Prozessnummer im untergeordneten Prozess zurückgegeben, 0 wird im untergeordneten Prozess zurückgegeben und -1 wird zurückgegeben, wenn ein Fehler auftritt.

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

3. Kernpunkt: Der untergeordnete Prozess kopiert den Status des übergeordneten Prozesses, daher gibt es den obigen Beispielcode: pcntl_fork wird in der fünften Zeile ausgeführt, dann wird der Code des erstellten untergeordneten Prozesses auch in 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: Wenn der übergeordnete Prozess einen untergeordneten Prozess 0 erstellt, wenn i = 0 ist, ist dies zu diesem Zeitpunkt der untergeordnete Prozess Der Prozess führt die Schleife weiterhin aus. Erstellen Sie Ihren eigenen untergeordneten Prozess. Auf die gleiche Weise wird bei i = 0 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 vonWelche Funktion hat 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