Maison >cadre php >Swoole >La différence entre les versions swoole

La différence entre les versions swoole

(*-*)浩
(*-*)浩original
2019-12-16 11:39:213380parcourir

La différence entre les versions 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 à la fois 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.

Dans la version 3.0 de Swoole, nous avons implémenté un nouveau planificateur de coroutine intégré à PHP, basé sur le mécanisme EG (vm_interrupt) de ZendVM, supprimant la dépendance sur setjmp/longjmp.

permet d'appliquer les coroutines Swoole n'importe où, y compris les destructeurs d'objets PHP, les méthodes magiques, les appels de fonctions de réflexion et d'autres scénarios. Le nouveau numéro de version sera remplacé par Swoole 3.0, qui était initialement prévu pour être basé. sur la coroutine de la pile libco C, reportée à la version 4.0.

La nouvelle version du noyau coroutine repose sur PHP-7.1, donc la dépendance de Swoole à l'égard de la version PHP a été augmentée à 7.1, et sa dépendance à l'égard de la version gcc a été augmentée à 4.8.

Swoole 4.0 implémente un nouveau noyau de coroutine basé sur le code assembleur boost.context 1.60.

Sur la base de la sauvegarde de la pile d'appels de fonctions PHP, le stockage de contexte de la pile C est ajouté. Prise en charge implémentée de toute la syntaxe PHP. Les coroutines peuvent désormais être utilisées dans n'importe quelle fonction PHP, y compris call_user_func, réflexion, méthode magique et array_map.

4.0 est 100% compatible avec 2.0. Seul le noyau de la coroutine a été reconstruit et la couche API n'a pas changé

Le code de la branche 4.0 sera mis à niveau vers la norme C++11. . Il est recommandé d'utiliser gcc-4.8 ou une version supérieure

Prend en charge php7.1 et supérieur

.

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
Article précédent:Comment appliquer swoole_mysqlArticle suivant:Comment appliquer swoole_mysql