Maison > cadre php > Swoole > le corps du texte

Comment activer la coroutine swoole

(*-*)浩
Libérer: 2019-12-09 11:01:31
original
3389 Les gens l'ont consulté

Comment activer la coroutine swoole

La version officielle de Swoole 2.0 est sortie. La plus grande mise à jour de la version 2.0 est l'ajout de la prise en charge des coroutines. La version officielle prend en charge PHP5 et PHP7.

Basé sur la coroutine Swoole2.0, les développeurs PHP peuvent écrire du code de manière synchrone, et la couche sous-jacente planifie automatiquement la coroutine et la transforme en IO asynchrone.

Résolvez le problème des rappels imbriqués dans la programmation asynchrone traditionnelle. (Apprentissage recommandé : tutoriel vidéo swoole )

Par rapport à l'implémentation de rendement/générateur et async/await dans Node.js (ES6+), Python et d'autres langages, la coroutine Swoole n'a pas besoin à modifier. Le code ajoute des mots-clés supplémentaires.

Par rapport à goroutine dans le langage Go, la coroutine Swoole est intégrée. Il n'est pas nécessaire d'ajouter le mot-clé go au code de la couche application pour démarrer la coroutine. Il vous suffit d'utiliser le client coroutine encapsulé. est plus simple à utiliser. De plus, le composant IO de la coroutine Swoole dispose d'un mécanisme de délai d'attente intégré au niveau de la couche inférieure, il n'est donc pas nécessaire d'utiliser une sélection/chan/minuterie complexe pour implémenter le délai d'attente du client.

Actuellement, les composants clients coroutine intégrés au bas de Swoole incluent : udpclient, tcpclient, httpclient, redisclient et mysqlclient, qui couvrent essentiellement plusieurs protocoles de communication couramment utilisés par les développeurs. Les composants Coroutine ne peuvent être utilisés que dans les fonctions de rappel onConnect, onRequest, onReceive et onMessage du serveur.

Utiliser la coroutine swole

Comment utiliser la coroutine :

Utiliser go()( SwooleCoroutine ::abréviation de create()) Créez une coroutine

Dans la fonction de rappel de go(), ajoutez le code que la coroutine doit exécuter. Notez qu'il s'agit d'un code non bloquant.

use Swoole\Coroutine as Co; // 常用的缩写方式

go(function () { // 创建协程, 回调函数中写需要在协程中执行的代码
    echo "daydaygo";
    Co::sleep(1); // 不能是阻塞代码
});
Copier après la connexion

Coroutine

Comme mentionné ci-dessus, utilisez go() pour créer une coroutine

serveur swoole, la couche inférieure est automatiquement dans onRequet, onReceive , créent automatiquement une coroutine avant onConnect et d'autres rappels d'événements

La portée d'influence après avoir activé le paramètre activate_coroutine : inclut principalement le minuteur Timer

La version coroutine du processus Task ouverte l'utilisation de task_enable_coroutine sera dans onTask Une coroutine est automatiquement créée avant le rappel

Le processus et la prise en charge du pool de processus activant la coroutine Le processus enfant créé après son activation créera automatiquement la coroutine

// tcp/udp server, 可以在此基础可封装 rpc
$s = new \Swoole\Server();
// http server, 替代传统的 fpm
$s = new \Swoole\Http\Server();
// 开启 http2 支持: https://wiki.swoole.com/wiki/page/326.html
$s = new \Swoole\Http\Server();
$s->set([
    'open_http2_protocol' => true,
]);
// 进而可以实现基于 http2 的服务, 比如 grpc
// websocket server
$s = new \Swoole\WebSocket\Server();
Copier après la connexion
.

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