Maison  >  Article  >  développement back-end  >  Comment PHP gère les processus

Comment PHP gère les processus

(*-*)浩
(*-*)浩original
2019-09-20 13:15:053062parcourir

Comment PHP gère les processus

Gestion des processus - Empêcher le processus de devenir un processus zombie

Une fois le processus créé, comment gérez-vous les processus enfants ?

Utilisation de signaux pour gérer les processus enfants, il existe généralement deux situations : (Apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)

posix_kill() : Cette fonction n'est pas comme son nom l'indique. Elle fait fonctionner le processus enfant en envoyant un signal au processus enfant. Lorsque cela est nécessaire, vous pouvez choisir d'envoyer un signal de fin de processus au processus enfant pour terminer le processus enfant

.

pcntl_waitpid() : Attend ou renvoie l'état du processus enfant de fork. Si le processus enfant spécifié s'est terminé lorsque cette fonction est appelée (communément appelée processus zombie), cette fonction reviendra immédiatement. et libérez toutes les ressources système du processus enfant. Ce processus peut empêcher le processus enfant de devenir un processus zombie, provoquant un gaspillage de ressources système

Processus orphelin : Le processus parent se bloque ; et le processus enfant est repris par le processus init avec pid=1 (wait/waitpid) , jusqu'à ce que le cycle de vie du processus enfant se termine et que les ressources soient recyclées par le système et que le processus parent effectue les opérations de recyclage pertinentes

Processus zombie : Le processus enfant se termine et le processus parent n'obtient pas le processus enfant via wait/waitpid. Le statut, le numéro de processus occupé par le processus enfant et d'autres descripteurs de ressources existent toujours, causant des dommages : par exemple, le numéro de processus est limité et le numéro de processus ne peut pas être publié, ce qui entraîne aucun numéro de processus disponible à l'avenir

**Utilisé dans le processus parent : pcntl_wait Ou le but de pcntl_waitpid est d'empêcher les travailleurs de devenir des processus zombies

Fonction : Après avoir utilisé pcntl_wait(), après la mort du processus enfant, le processus parent sera également arrêté**

Enfin, nous passons l'image ci-dessous Résumons et décrivons brièvement le processus de cette mise en œuvre multi-processus :

Comment PHP gère les processus

Gestion des processus-communication inter-processus

File d'attente : telle que Redis, recommandée

socket : recommandé

Pipeline : complexe à mettre en œuvre, et le tube (pipe), existe sous forme de fichier, il y a un goulot d'étranglement des performances des E/S du disque dur

Signal : transporte une petite quantité d'informations, difficile à gérer

Gestion des processus - passer au processus démon

Utiliser et implémenter

php deadloop.php &

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
Article précédent:Comment PHP gère la mémoireArticle suivant:Comment PHP gère la mémoire