Maison  >  Article  >  développement back-end  >  Comment implémenter le multi-processus en php

Comment implémenter le multi-processus en php

藏色散人
藏色散人original
2020-10-22 09:23:083155parcourir

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.

Comment implémenter le multi-processus en php

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn