Maison >développement back-end >Problème PHP >PHP est-il multi-processus ?
Lors de l'exécution de scripts sur le serveur, certaines tâches chronophages ne peuvent être évitées et l'utilisation de plusieurs processus est essentielle. Après PHP5.5, PHP a commencé à ajouter des éléments multi-processus pour répondre aux besoins de développement.
Remarque :
Extensions qui doivent être activées pour implémenter le multi-traitement : pcntl, posix. (Apprentissage recommandé : Tutoriel vidéo PHP)
La programmation multi-processus de PHP n'est pas supportée dans l'environnement Windows Cet article est principalement développé et testé dans l'environnement Linux<.>
Un schéma de structure simple
Fonctions principales
pcntl_fork : Créer plusieurs processus, deux éléments seront renvoyés après l'appel Le pid du processus, 0 est le processus enfant, supérieur à 0 est le processus parent (le processus parent obtient l'identifiant du processus enfant, il est donc supérieur à 0), -1 signifie le échec de la création$pid = $pcntlInstall ? pcntl_fork() : 0;if ($pid == -1) { //fork失败 } elseif ($pid > 0) { //父进程 ...... } elseif ($pid == 0) { //子进程 ...... }pcntl_signal : enregistrez une fonction de rappel de traitement du signal, vous pouvez capturer le signal envoyé à la fin du processus enfant
/配合pcntl_signal使用 declare (ticks = 1); //当子进程退出时,会触发该函数,当前子进程数-1 pcntl_signal(SIGCHLD, function ($signo) { switch ($signo) { case SIGCHLD: echo $curChildPro . 'SIGCHLD', PHP_EOL; $curChildPro--; break; } });pcntl_wait : utilisé pour mettre en pause le processus parent et attendre le processus enfant sortir
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!