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 performancesLe code du mode BASE est plus simple et moins sujet aux erreursInconvé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éesUn 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éeLa 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 WorkerInconvé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érationsCe 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!