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); // 不能是阻塞代码 });
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();
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!