Maison >développement back-end >tutoriel php >Exemple d'utilisation multi-processus PHP pcntl
L'exemple de cet article décrit l'utilisation du multi-processus pcntl de PHP. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :
PHP peut également gérer une transaction avec plusieurs processus en utilisant la série de fonctions PCNTL. Par exemple, je dois obtenir 800 000 données de la base de données, puis effectuer une série de traitements ultérieurs. À ce stade, dois-je utiliser un seul processus ? Vous pouvez attendre jusqu'à aujourd'hui l'année prochaine. Vous devez donc utiliser la fonction pcntl.
Supposons que je veuille démarrer 20 processus et diviser 1 à 80 w de données en 20 parties. Le processus principal attend la fin de tous les processus enfants avant de quitter :
$max = 800000; $workers = 20; $pids = array(); for($i = 0; $i < $workers; $i++){ $pids[$i] = pcntl_fork(); switch ($pids[$i]) { case -1: echo "fork error : {$i} \r\n"; exit; case 0: $param = array( 'lastid' => $max / $workers * $i, 'maxid' => $max / $workers * ($i+1), ); $this->executeWorker($input, $output, $param); exit; default: break; } } foreach ($pids as $i => $pid) { if($pid) { pcntl_waitpid($pid, $status); } }
Ici, lorsque pcntl_fork sort, une valeur pid sera renvoyée. Ce pid est 0 dans le processus enfant et est le pid du processus enfant dans le processus parent (>0 If pid). Un -1 indique que quelque chose s'est mal passé avec le fork.
L'utilisation d'un tableau $pids permet au processus principal d'attendre que tous les processus soient terminés avant de le terminer
J'espère que cet article sera utile à la conception de la programmation PHP de chacun.
Pour plus d'articles liés aux exemples d'utilisation multi-processus pcntl de PHP, veuillez prêter attention au site Web chinois de PHP !