Maison  >  Article  >  développement back-end  >  PHP prend-il en charge plusieurs processus ?

PHP prend-il en charge plusieurs processus ?

(*-*)浩
(*-*)浩original
2019-09-05 09:18:002679parcourir

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 prend-il en charge plusieurs processus ?

Remarque :

Extensions qui doivent être activées pour implémenter le multi-traitement : pcntl, posix.

La programmation multi-processus de PHP n'est pas prise en charge dans l'environnement Windows. Cet article est principalement développé et testé dans l'environnement Linux

Principal. function (Apprentissage recommandé : Tutoriel vidéo PHP)

pcntl_fork : Créez plusieurs processus après l'appel, le pid des deux processus sera renvoyé 0. est le processus enfant, et supérieur à 0 est le processus parent. (Le processus parent obtient l'identifiant du processus enfant, il est donc supérieur à 0), -1 signifie un échec de 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 pour capturer le signal envoyé lorsque le processus enfant se termine

/配合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 que le processus enfant se termine

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