Maison >développement back-end >Problème PHP >PHP est-il multi-processus ?

PHP est-il multi-processus ?

(*-*)浩
(*-*)浩original
2019-09-29 10:20:122555parcourir

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.

PHP est-il multi-processus ?

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

PHP est-il multi-processus ?

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 . &#39;SIGCHLD&#39;, 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!

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