Heim  >  Artikel  >  Backend-Entwicklung  >  Kennen Sie pcntl_fork in PHP?

Kennen Sie pcntl_fork in PHP?

慕斯
慕斯nach vorne
2021-05-24 15:29:412807Durchsuche

Über die Funktion pcntl_fork() handelt es sich um die Funktion, die zum Erstellen eines Prozesses im PHP-PCNTL-Modul verwendet wird. Dieser Artikel führt Sie in die Geheimnisse von PHP ein, lasst uns gemeinsam vorgehen! ! !

Kennen Sie 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, und im Falle eines Fehlers wird -1 zurückgegeben kopiert den Code des übergeordneten Prozesses, Daten. Dann bedeutet das: Der Code und die Daten, die den untergeordneten und übergeordneten Prozessen gehören, sind genau gleich.

3.

Wichtiger Punkt: 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 auch der Code des erstellten untergeordneten Prozesses ausgeführt ab der fünften Zeile ausgeführt. Der untergeordnete Prozess hat die Daten und den Code kopiert. Daher existiert im untergeordneten Prozess dasselbe: $one, $two und andere Variablen

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

那么:上面的for循环,实际会产生多少个子进程?答案是7个,在linux下,用ps命令将可以看到8个进程(1个父进程,7个子进程)
Grund: Der übergeordnete Prozess ist in ​ ​ ​​ ​​ ich ​​ ​​ = ​​ ​​ 0 ​​ ​​ Stunde ​​ ​​ , ​​ ​​ Erstellen ​​ ​​ gründen ​​ ​​ aus ​​ ​​ eins ​​ ​​ individuell ​​ ​​ Sohn ​​ ​​ Eingeben ​​ ​​ Verfahren ​​ ​​ 0 ​​ ​​ , ​​ ​​ Das ​​ ​​ Stunde ​​ ​​ von ​​ ​​ Sohn ​​ ​​ Eingeben ​​ ​​ Verfahren ​​ ​​ , ​​ ​​ zurückkehren ​​ ​​ treffen ​​ ​​ Fortsetzung ​​ ​​ Fortsetzung ​​ ​​                     ​​ ​​ OK ​​ ​​ Verkehr ​​ ​​ Ring ​​ ​​ . ​​ ​​ Erstellen ​​ ​​ gründen ​​ ​​ aus ​​ ​​ Gattung ​​ ​​ Bei ​​ ​​ seit ​​ ​​               ​​ ​​ von ​​ ​​ Sohn ​​ ​​ Eingeben ​​ ​​ Verfahren ​​ ​​ . ​​ ​​ Dasselbe ​​ ​​ Grund ​​ ​​ :: ​​ ​​ ​​ 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.Gleicher Grund: ​ i=0Wenn , createbuild raus Onesubcome in Cheng0,DiesmalsKindtrittCheng,Rückkehrwirdweitermachen Weiter BeharrlichkeitAusführungFolgen Ring. Erstellenbauenausgehörenzusich selbstseinemSohninProzess. Das Gleiche wie: Dies geschieht auch, wenn i=1...Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonKennen Sie 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