Maison développement back-end tutoriel php Introduction détaillée du serveur d'écho multi-processus dans la programmation PHPSocket (image et texte)

Introduction détaillée du serveur d'écho multi-processus dans la programmation PHPSocket (image et texte)

Sep 13, 2018 pm 05:11 PM
linux php socket

Cet article vous apporte une introduction détaillée (images et texte) sur le serveur d'écho multi-processus dans la programmation PHPSocket. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Le dernier programme de service d'écho présente un gros défaut, c'est-à-dire qu'il ne peut se connecter qu'à un seul client à la fois, ce qui est évidemment déraisonnable.

Cette fois, nous utilisons une approche multi-processus pour fournir des services à plusieurs clients en même temps.

Ce qui suit est l'effet final :

Introduction détaillée du serveur décho multi-processus dans la programmation PHPSocket (image et texte)

(Le processus de travail que nous avons créé peut être visualisé via la commande ps)

Introduction détaillée du serveur décho multi-processus dans la programmation PHPSocket (image et texte)

(Ouvrez plusieurs terminaux via xshell et connectez plusieurs clients au programme de service)

Commencer à coder Avant, Présentons ce qu'est un processus.

Un processus, c'est-à-dire un programme en cours d'exécution qui occupe de la mémoire, est un espace mémoire indépendant. Par exemple, lorsque l’on ouvre le logiciel Notepad sous Windows, cette opération équivaut à ouvrir un processus.

Le multi-processus consiste à créer plusieurs processus pour réaliser une chose ensemble.

Nous n'avons besoin que d'implémenter le programme côté serveur cette fois, et le client peut toujours utiliser le précédent. Si vous n’avez pas lu les articles précédents, vous pouvez consulter les articles historiques.

En PHP, on peut utiliser la fonction pcntl_fork pour créer un processus.

Ce qui suit est le prototype de la fonction :

int pcntl_fork ( void )
Copier après la connexion

Explication officielle :

En cas de succès, le PID du processus enfant généré est renvoyé dans l'exécution du processus parent thread, et dans le processus enfant, renvoie 0 dans le thread d'exécution. 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.

Pourquoi dit-on que c'est le thread exécuté par le processus parent ? Parce qu'un processus contient au moins un thread, et ce thread est le thread principal du processus.

Lorsque le processus parent appelle pcntl_fork, il copie également un processus enfant indépendant. Ce processus enfant a le même contexte que le processus parent. En d’autres termes, les deux processus partagent simplement le même code.

Entrez le processus de codage :

Introduction détaillée du serveur décho multi-processus dans la programmation PHPSocket (image et texte)

En exécutant la fonction pcntl_fork, un processus enfant est copié en même temps. time, si le contexte est L'environnement d'exécution du processus parent, la valeur de retour est le numéro de processus du processus enfant. S'il s'agit de l'environnement d'exécution d'un processus enfant, 0 est renvoyé. Par conséquent, dans la structure du programme suivant, les deux branches sont exécutées.

Le processus enfant a toujours la même logique qu'avant, utilisé pour recevoir les messages du client et les envoyer au client en même temps.

L'avant-dernière ligne appelle la fonction pcntl_waitpid Avant d'expliquer cette fonction, comprenons d'abord ce qu'est un processus zombie.

Normalement, le processus enfant est créé via le processus parent. Étant donné que les processus sont des structures de mémoire indépendantes, le processus parent ne connaît pas l'état d'exécution du processus enfant. Une fois que le processus enfant a terminé sa tâche, il ne peut pas se terminer tout seul. À ce stade, le processus parent doit obtenir le statut du processus enfant via le système d'exploitation pour recycler le processus enfant. Sinon, notre processus enfant deviendra une ressource poubelle, c'est-à-dire un processus zombie.

Ce qui suit est le prototype de cette fonction :

int pcntl_waitpid ( int $pid , int &$status [, int $options = 0 ] )
Copier après la connexion

Explication officielle :

Attendez ou renvoyez l'état du processus enfant de fork.

En fait, il y a un problème avec le code ci-dessus. Après avoir appelé pcntl_waitpid pour la première fois dans foreach, le processus principal est en fait bloqué à ce moment-là, attendant la sortie du premier processus enfant, tandis que l'autre enfant processus S'il se termine anormalement à ce moment-là, il ne sera pas recyclé par le processus principal et un processus zombie sera généré. Dans le développement réel, le processus principal doit encore faire autre chose.

La méthode non bloquante est donc recommandée ici. C'est très simple. Ajoutez simplement le troisième paramètre : WNOHANG. C'est-à-dire : pcntl_waitpid ($pid, $status, WNOHANG)

De cette façon, il peut revenir immédiatement sans que le processus enfant ne se termine, continuant ainsi à exécuter le code suivant.

Recommandations associées :

Pratique de programmation multi-processus PHP côté serveur

Programmation multi-processus PHP côté serveur Tutoriel practice_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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP: Gestion des bases de données et logique côté serveur PHP: Gestion des bases de données et logique côté serveur Apr 15, 2025 am 12:15 AM

PHP utilise les extensions MySQLI et PDO pour interagir dans les opérations de base de données et le traitement de la logique côté serveur, et traite la logique côté serveur via des fonctions telles que la gestion de session. 1) Utilisez MySQLI ou PDO pour vous connecter à la base de données et exécuter les requêtes SQL. 2) Gérer les demandes HTTP et l'état de l'utilisateur via la gestion de session et d'autres fonctions. 3) Utiliser les transactions pour assurer l'atomicité des opérations de base de données. 4) Empêcher l'injection de SQL, utiliser les connexions de gestion des exceptions et de clôture pour le débogage. 5) Optimiser les performances via l'indexation et le cache, écrivez du code très lisible et effectuez une gestion des erreurs.

Objectif de PHP: Construire des sites Web dynamiques Objectif de PHP: Construire des sites Web dynamiques Apr 15, 2025 am 12:18 AM

PHP est utilisé pour créer des sites Web dynamiques, et ses fonctions principales incluent: 1. Générer du contenu dynamique et générer des pages Web en temps réel en se connectant à la base de données; 2. Traiter l'interaction utilisateur et les soumissions de formulaires, vérifier les entrées et répondre aux opérations; 3. Gérer les sessions et l'authentification des utilisateurs pour offrir une expérience personnalisée; 4. Optimiser les performances et suivre les meilleures pratiques pour améliorer l'efficacité et la sécurité du site Web.

Comment utiliser Docker Desktop Comment utiliser Docker Desktop Apr 15, 2025 am 11:45 AM

Comment utiliser Docker Desktop? Docker Desktop est un outil pour exécuter des conteneurs Docker sur les machines locales. Les étapes à utiliser incluent: 1. Installer Docker Desktop; 2. Démarrer Docker Desktop; 3. Créer une image Docker (à l'aide de DockerFile); 4. Build Docker Image (en utilisant Docker Build); 5. Exécuter Docker Container (à l'aide de Docker Run).

PHP et le Web: explorer son impact à long terme PHP et le Web: explorer son impact à long terme Apr 16, 2025 am 12:17 AM

PHP a façonné le réseau au cours des dernières décennies et continuera de jouer un rôle important dans le développement Web. 1) PHP est originaire de 1994 et est devenu le premier choix pour les développeurs en raison de sa facilité d'utilisation et de son intégration transparente avec MySQL. 2) Ses fonctions principales incluent la génération de contenu dynamique et l'intégration à la base de données, ce qui permet au site Web d'être mis à jour en temps réel et affiché de manière personnalisée. 3) La large application et l'écosystème de PHP ont motivé son impact à long terme, mais il fait également face à des mises à jour de version et à des défis de sécurité. 4) Les améliorations des performances ces dernières années, telles que la sortie de PHP7, lui permettent de rivaliser avec les langues modernes. 5) À l'avenir, PHP doit faire face à de nouveaux défis tels que la conteneurisation et les microservices, mais sa flexibilité et sa communauté active le rendent adaptable.

Quelle configuration de l'ordinateur est requise pour VScode Quelle configuration de l'ordinateur est requise pour VScode Apr 15, 2025 pm 09:48 PM

Vs Code Système Exigences: Système d'exploitation: Windows 10 et supérieur, MacOS 10.12 et supérieur, processeur de distribution Linux: minimum 1,6 GHz, recommandé 2,0 GHz et au-dessus de la mémoire: minimum 512 Mo, recommandée 4 Go et plus d'espace de stockage: Minimum 250 Mo, recommandée 1 Go et plus d'autres exigences: connexion du réseau stable, xorg / wayland (Linux) recommandé et recommandée et plus

VScode ne peut pas installer l'extension VScode ne peut pas installer l'extension Apr 15, 2025 pm 07:18 PM

Les raisons de l'installation des extensions de code vs peuvent être: l'instabilité du réseau, les autorisations insuffisantes, les problèmes de compatibilité système, la version de code vs est trop ancienne, un logiciel antivirus ou des interférences de pare-feu. En vérifiant les connexions réseau, les autorisations, les fichiers journaux, la mise à jour vs du code, la désactivation des logiciels de sécurité et le redémarrage du code ou des ordinateurs, vous pouvez progressivement dépanner et résoudre les problèmes.

Quelles technologies sous-jacentes Docker utilise-t-elle? Quelles technologies sous-jacentes Docker utilise-t-elle? Apr 15, 2025 am 07:09 AM

Docker utilise des moteurs à conteneurs, des formats de miroir, des pilotes de stockage, des modèles de réseau, des outils d'orchestration de conteneurs, de la virtualisation du système d'exploitation et du registre des conteneurs pour prendre en charge ses capacités de conteneurisation, offrant un déploiement et une gestion d'applications légères, portables et automatisées.

Pourquoi utiliser PHP? Avantages et avantages expliqués Pourquoi utiliser PHP? Avantages et avantages expliqués Apr 16, 2025 am 12:16 AM

Les principaux avantages du PHP comprennent la facilité d'apprentissage, un soutien solide sur le développement Web, les bibliothèques et les cadres riches, les performances élevées et l'évolutivité, la compatibilité multiplateforme et la rentabilité. 1) Facile à apprendre et à utiliser, adapté aux débutants; 2) une bonne intégration avec les serveurs Web et prend en charge plusieurs bases de données; 3) ont des cadres puissants tels que Laravel; 4) Des performances élevées peuvent être obtenues grâce à l'optimisation; 5) prendre en charge plusieurs systèmes d'exploitation; 6) Open source pour réduire les coûts de développement.

See all articles