Maison  >  Article  >  Weibo Qzone WeChat pcntl_fork implémente PHP multi-processus

Weibo Qzone WeChat pcntl_fork implémente PHP multi-processus

小云云
小云云original
2017-11-03 13:57:331901parcourir

Ce que les ingénieurs PHP utilisent le plus souvent, c'est PHP-FMP pour planifier les processus PHP. L'utilisation de PHP ne se limite pas au Web, il peut également être utilisé pour la programmation d'outils système, la surveillance ou l'exploitation et la maintenance. Parlons ensuite de la façon d’implémenter la programmation multi-processus PHP.

Démarrez d'abord un processus principal, qui est utilisé pour lire les informations de configuration

Par exemple, j'ai lu que je devais surveiller 5 indicateurs. Ensuite, le processus principal démarre 5 sous-processus pour surveiller respectivement ces 5 indicateurs.

Fonctionnement simplifié : un processus principal crée 5 sous-processus

Pour créer un processus, vous devez utiliser une fonction pcntl_fork() en PHP Certaines personnes ne connaissent peut-être pas cette fonction, mais ils ont été exposés à Linux. Quiconque est devenu C sait qu'il existe une fonction appelée fork() sous Linux, qui est utilisée pour créer des processus enfants.

A noter que cette fonction n'est utilisable que sous Linux, et que l'extension pcntl doit être installée.

La documentation officielle dit ceci :

La fonction pcntl_fork() crée un processus enfant. Ce processus enfant n'est différent de son processus parent qu'en PID (numéro de processus) et PPID (numéro de processus parent). ). Pour plus de détails sur le fonctionnement de fork sur votre système, consultez le manuel fork(2) de votre système.

En cas de succès, le PID du processus enfant généré est renvoyé dans le thread d'exécution du processus parent et 0 est renvoyé dans le thread d'exécution du processus enfant. En cas d'échec, -1 est renvoyé dans le contexte du processus parent, le processus enfant n'est pas créé et une erreur PHP est générée.

De cette façon, un processus enfant peut être créé. Une fois le processus enfant créé avec succès, la méthode après pcntl_fork() sera exécutée.


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