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 :
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!