So implementieren Sie Multiprozesse in PHP: Aktivieren Sie zuerst die pcntl-Erweiterung und schneiden Sie dann das angegebene Array in ein Array mit jeweils 500 Elementen untergeordneter Prozess, um die Ausführung abzuschließen.
Empfohlen: „PHP-Video-Tutorial“
php-Multiprozessimplementierung
Wenn die Ausführungszeit eines Prozesses zu lang ist, müssen Sie Multiprozess verwenden, um die Aufgabe aufzuteilen und zu verkürzen Programmausführungszeit
pcntl ist PHP Eine Multiprozesserweiterung, pcntl ist die Abkürzung für Prozesssteuerung
Lassen Sie uns kurz über die Art und Weise sprechen, wie pcntl Multiprozesse implementiert.
pcntl_fork – Erzeugt einen Fork (untergeordneten Prozess) an der aktuellen Position des aktuellen Prozesses. Anmerkung: Sowohl der übergeordnete Prozess als auch der untergeordnete Prozess werden weiterhin von der Gabelposition aus ausgeführt. Der Unterschied besteht darin, dass der Rückgabewert von fork die Nummer des untergeordneten Prozesses ist Prozess erhält 0.
Beispiel:
$habit_class这个数组有5000条数据,所以先用array_chunk函数把该数组切割为每500个元素一个数组。 $habit_class = array_chunk($habit_class,500,true); foreach($habit_class as $k2=>$v2){ $pid = pcntl_fork(); if ($pid == -1) { die("could not fork"); } elseif ($pid) { //这里是父进程逻辑处理,父进程会返回子进程的pid; } else {// 子进程处理,子进程返回的pid未0; foreach($v2 as $k=>$v){ //进行具体业务处理 } } exit;// 一定要注意退出子进程,否则pcntl_fork() 会被子进程再fork,带来处理上的影响。 } } // 等待子进程执行结束 while (pcntl_waitpid(0, $status) != -1) { $status = pcntl_wexitstatus($status); //echo "Child $status completed\n"; }
Das obige ist der detaillierte Inhalt vonSo implementieren Sie Multiprozesse in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!