Maison > cadre php > Swoole > Comment Swoole implémente les coroutines

Comment Swoole implémente les coroutines

(*-*)浩
Libérer: 2019-12-07 14:11:00
original
2990 Les gens l'ont consulté

Swoole possède des capacités de coroutine intégrées depuis la version 2.0 et fournit des interfaces IO avec des capacités de coroutine (unifiées dans l'espace de noms SwooleCoroutine*).

Lors de l'activation de la coroutine, veuillez ajouter l'option de compilation --enable-coroutine lors de la compilation.

Comment Swoole implémente les coroutines

Les coroutines peuvent être comprises comme de purs threads en mode utilisateur, qui basculent par coopération plutôt que par préemption. Par rapport aux processus ou aux threads, toutes les opérations des coroutines peuvent être effectuées en mode utilisateur et les coûts de création et de changement sont inférieurs. (Apprentissage recommandé : tutoriel vidéo swoole )

Swoole peut créer une coroutine correspondante pour chaque requête et planifier raisonnablement la coroutine en fonction de l'état IO, ce qui apportera les avantages suivants :

Les développeurs peuvent utiliser l'écriture de code synchrone pour obtenir l'effet et les performances des E/S asynchrones sans aucune conscience, évitant ainsi la logique de code discrète provoquée par les rappels asynchrones traditionnels et étant piégés dans des rappels multicouches, ce qui rend le code impossible à maintenir.

En même temps, comme swoole encapsule la coroutine dans la couche inférieure, par rapport au framework de coroutine de couche PHP traditionnel, les développeurs n'ont pas besoin d'utiliser le mot-clé rendement pour identifier une opération d'E/S de coroutine, il n'y a donc pas Il est nécessaire de spécifier le rendement. La sémantique est profondément comprise et les appels à chaque niveau sont modifiés pour produire, ce qui améliore considérablement l'efficacité du développement.

L'API Coroutine cible actuellement l'encapsulation client des protocoles courants tels que TCP et UDP, notamment :

UDP

TCP

HTTP

Mysql

Redis

peut répondre aux besoins de la plupart des développeurs. Pour les protocoles privés, les développeurs peuvent utiliser l'interface TCP ou UDP de la coroutine pour une encapsulation pratique.

Activer

Prerequisite:
Copier après la connexion

Exigences de la version PHP : >= 5.5, dont 5.5, 5.6, 7.0, 7.1

Développer basé sur swoole_server ou swoole_http_server, Actuellement, les coroutines ne sont prises en charge que dans onRequet, onReceive, onConnect et d'autres fonctions de rappel d'événements.

swoole_server et swoole_http_server créeront des coroutines correspondantes pour chaque requête. Les développeurs peuvent utiliser des clients coroutines dans les rappels d'événements onRequet, onReceive et onConnect.

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal