Comment implémenter le multi-processus en PHP : activez d'abord l'extension pcntl ; puis utilisez la fonction array_chunk pour couper le tableau spécifié en un tableau de 500 éléments ; puis effectuez le traitement logique du processus parent et enfin le traitement du processus enfant ; attendez que le processus enfant s'exécute. Terminez-le simplement.
Recommandé : "Tutoriel vidéo PHP"
Implémentation multi-processus PHP
Lorsqu'un processus prend trop de temps à s'exécuter, vous devez utiliser plusieurs processus pour décomposer la tâche et raccourcir le temps d'exécution du programme
pcntl est une extension multi-processus de php, et pcntl est l'abréviation du contrôle des processus
Parlons brièvement de la façon dont pcntl implémente le multi-processus.
pcntl_fork — Génère un fork (processus enfant) à la position actuelle du processus actuel. Annotation : fork crée un processus enfant.Le processus parent et le processus enfant continuent de s'exécuter à partir de la position fork. La différence est que pendant l'exécution du processus parent, la valeur de retour de fork est le numéro du processus enfant, tandis que l'enfant. le processus obtient 0.
Exemple :
$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"; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!