Maison  >  Article  >  cadre php  >  Comment fonctionne Swoole

Comment fonctionne Swoole

(*-*)浩
(*-*)浩original
2019-12-09 09:22:462506parcourir

Comment fonctionne Swoole

Mode monothread (SWOOLE_BASE)

Ce mode est le serveur asynchrone non bloquant traditionnel. Il est totalement cohérent avec des programmes tels que Nginx et Node.js. (Apprentissage recommandé : Tutoriel vidéo SWOOLE )

La fonction d'appeler le PHP directement dans le cycle temporel, pas la tâche de livraison Dispatch. S'il y a des opérations bloquantes dans la fonction de rappel, le serveur dégénérera en mode synchrone. Le paramètre worker_num est toujours valide en mode BASE et plusieurs processus Worker seront démarrés.

Il n'y a aucun rôle de processus Maître en mode BASE

Chaque processus Worker assume également les responsabilités du thread Reactor et du processus Worker en mode Processus

Le processus Manager est facultatif en mode BASE. Lorsque worker_num=1 est défini et que les fonctionnalités Task et MaxRequest ne sont pas utilisées, la couche inférieure créera directement un processus Worker distinct et aucun processus Manager ne sera créé

Avantages BASE du mode :

Le mode BASE n'a pas de surcharge IPC et de meilleures performances

Le code du mode BASE est plus simple et moins sujet aux erreurs

Inconvénients du mode BASE :

Les connexions TCP sont maintenues dans le processus Worker, donc lorsqu'un processus Worker raccroche, toutes les connexions dans ce Worker seront fermées

Un petit nombre de connexions TCP longues Tous les processus Worker ne peuvent pas être utilisés

Les connexions TCP sont liées aux Workers Certaines connexions dans les applications à connexion longue ont une grande quantité de données, et la charge des processus Worker où se trouvent ces connexions sera. très élevé. Cependant, le volume de données de certaines connexions est faible, de sorte que la charge sur le processus Worker sera très faible et que les différents processus Worker ne pourront pas atteindre l'équilibre.

Scénarios applicables du mode BASE :

S'il n'y a pas besoin d'interaction entre les connexions client, le mode BASE peut être utilisé. Tels que Memcache, serveur HTTP, etc.

Mode processus (SWOOLE_PROCESS)

Le mode multi-processus est la méthode la plus complexe, utilisant un grand nombre de mécanismes de communication inter-processus et de gestion des processus. Convient aux scénarios avec une logique métier très complexe. Swoole fournit des mécanismes complets de gestion des processus et de protection de la mémoire. Même lorsque la logique métier est très complexe, elle peut fonctionner de manière stable pendant une longue période.

Swoole fournit la fonction Buffer dans le thread Reactor, qui peut gérer un grand nombre de connexions lentes et de clients malveillants octet par octet. De plus, des options de configuration de l'affinité du processeur sont fournies pour rendre le programme plus efficace.

Avantages du mode processus :

L'envoi de connexion et de demande de données est séparé, et le processus Worker ne sera pas causé par la grande quantité de données dans certaines connexions et le petite quantité de données dans certaines connexions. Déséquilibré

Lorsque le processus Worker envoie une erreur fatale, la connexion ne sera pas coupée

La concurrence d'une seule connexion peut être obtenue, seul un petit nombre de TCP les connexions sont maintenues et les demandes peuvent être traitées simultanément dans plusieurs processus Worker

Inconvénients du mode processus :

Il y a la surcharge de 2 IPC Le processus maître et le processus maître. le processus de travail doit utiliser UnixSocket pour communiquer

Ne prend pas en charge certaines fonctions avancées, telles que l'envoi d'attente, la pause, la reprise et d'autres opérations

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