Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie Multiprozesse in PHP

So implementieren Sie Multiprozesse in PHP

藏色散人
藏色散人Original
2020-10-22 09:23:083155Durchsuche

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.

So implementieren Sie Multiprozesse in PHP

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!

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