workerman Par rapport au swoole dans les projets de développement réels, lequel choisiriez-vous ? Avez-vous des conseils sur lequel il est préférable que les débutants apprennent ?
Il y a des commentaires sur Internet selon lesquels les performances de Swoole sont bien supérieures à celles de Workerman. Est-ce vrai ?
Jetons d'abord un coup d'œil à leurs introductions respectives :
workerman : conteneur d'applications PHP open source hautes performances (github 10.2k)
workerman est un framework réseau écrit en PHP pur, prend en charge une concurrence élevée et est super Avec une grande stabilité, il dépasse considérablement la portée des applications PHP traditionnelles et est largement utilisé dans la messagerie instantanée, le développement d'applications, le développement de petits programmes, les salles de discussion, les serveurs de jeux mobiles, les jeux en ligne, les communications matérielles, l'Internet de Véhicules, maisons intelligentes et développement de l'Internet des objets dans d'autres domaines. [Tutoriel Workerman]
prend en charge les connexions longues TCP, prend en charge Websocket, HTTP et d'autres protocoles, prend en charge les protocoles personnalisés et possède de nombreux composants hautes performances tels que Mysql asynchrone, Redis asynchrone, HTTP asynchrone, client IoT MQTT, file d'attente de messages asynchrone , etc.
Swoole : Cadre de coroutine PHP (github 17,6k)
swoole est une extension de communication réseau écrite en c/c++ qui permet aux développeurs PHP d'écrire des sockets TCP, UDP et Unix hautes performances et à haute concurrence. , HTTP, WebSocket et d'autres services font que PHP ne se limite plus au domaine Web.
Swoole peut être largement utilisé dans Internet, les communications mobiles, le cloud computing, les jeux en ligne, l'Internet des objets (IOT), l'Internet des véhicules, les maisons intelligentes et d'autres domaines. L'utilisation de PHP + Swoole peut améliorer considérablement l'efficacité des équipes de R&D informatique de l'entreprise et se concentrer davantage sur le développement de produits innovants.
Les deux ont des fonctions similaires
Alors, lequel est le meilleur ? Comment devrions-nous choisir ?
Écoutons l'expérience et les opinions de l'utilisation de PHPer
1 : Coût d'apprentissage
Tout d'abord, expliquons la perspective du site Web chinois php :
Pour les novices, nous sommes plus enclins à recommander Workerman : Simple, facile à utiliser, bonne évolutivité, et peut être utilisé rapidement ! L'intérêt du langage PHP n'est-il pas simple et facile à utiliser ?
Il existe actuellement très peu de derniers cours sur Workerman sur Internet, c'est pourquoi PHP Chinese a récemment soigneusement enregistré un ensemble : Des bases de PHP Workerman aux cours pratiques, lancés aujourd'hui !
J'espère que cela pourra aider les étudiants à améliorer leurs compétences !
Nom du cours :
"PHP Workerman+ThinkPHP6 Instant Messaging Chat System"
(ThinkPHP6+Workerman/websocket)
Ce cours est développé sur la base de php homme pour créer un service Websocket Système de chat Web en temps réel, le contenu du cours comprend principalement :
1 Principe de communication Websocket et relation avec http
2 Workerman construit le service Websocket
3. Principe et mise en œuvre du chat de groupe QQ
4.
5. Chat privé en tête-à-tête et attribution aléatoire par le service client
6. L'expérience du service client obtient la liste des clients en ligne, etc.
7. Stockage des messages de chat et autres contenus.
Étudiants intéressés, dépêchez-vous et montez dans le bus pour bénéficier du nouveau prix de l'événement !
Événement de réduction à durée limitée :
Prix initial ¥399 yuans, prix réduit à durée limitée ¥189 yuans, se termine le 8 décembre !
Tous les cours devraient être mis à jour avant la version 12.8, date à laquelle le prix sera augmenté dans une certaine mesure !
Discours d'ouverture↓↓↓
https://www.php.cn/course/1475.html
(Consultation du cours + collecte de matériel de cours)
Opinions des internautes :
Évaluation des internautes 1 :
Si vous n'avez aucune expérience en programmation réseau ou en développement multi-processus, ma suggestion est de commencer par Workerman. Après tout, Workerman est implémenté en code PHP pur. Vous n'aurez pas beaucoup de difficulté à comprendre ses principes et à gérer les problèmes. profondeur.
Grâce à une étude approfondie de Workerman, vous pouvez acquérir les connaissances de base liées à la programmation réseau, comment ce type de programme est conçu et mis en œuvre et à quels détails il faut prêter attention. Vous pouvez également apprendre à développer des programmes multi-processus et à gérer et communiquer entre les processus.
Après avoir clairement compris cela, vous sentirez que le seuil n'est pas si élevé lors de la transition vers swoole. Si vous commencez à utiliser swoole directement, au moins la gestion et la communication entre les processus doivent être mises en œuvre par vous-même, et vous ne pourrez peut-être pas le faire. même avoir une idée.
Du moins profond au plus profond, commencez par les bases puis passez au niveau avancé.
Évaluation des internautes 2 :
swoole est une extension de PHP et ne s'appuie pas sur d'autres extensions. La couche inférieure est C et peut être appelée directement dans le programme avec des performances élevées. Workman utilise PHP natif et s'appuie sur d'autres extensions, vous devez donc télécharger le package de code source.
Le premier peut être compris comme swoole est une API fournie à PHP. Elle est relativement native, elle n'encapsule donc pas la logique métier dans la pratique et doit être développée par vous-même. Ce dernier englobe certains besoins de l’entreprise et est plus facile à démarrer.
J'apprends le swoole depuis quelques mois. Je trouve qu'il est difficile à contrôler. Il nécessite beaucoup de connaissances de base et est rarement utilisé dans le travail réel, mais je pense que cela vaut la peine d'être appris.
En bref, celui à utiliser dépend de son utilisation et de la demande du public. Workman peut avoir des coûts de développement inférieurs. Pour certains besoins spécifiques, vous pouvez également étudier swoole.
Évaluation des internautes 3 :
Recommander l'ouvrier ! L'ensemble d'expansion directe en C de Swoole ne convient pas aux novices avancés. Ce que veulent les novices, c'est graduel, stable et étape par étape. Maîtrisez d'abord un paradigme, puis procédez étape par étape.
workerman a également publié le framework Web officiel webman, et son classement aux tests de résistance est supérieur à celui de swoole. Il n'est pas exagéré de dire que Workerman est actuellement la solution PHP la plus mature et la moins coûteuse, et le seuil est encore bas.
Évaluation des internautes 4 :
swoole est une classe d'extension PHP développée en langage C. En termes de performances, swoole présente des avantages et a certaines exigences pour les programmeurs PHP. Ils doivent comprendre le développement des services de communication sous-jacents et. Les connaissances dont ils ont besoin sont nombreuses et Swoole convient généralement aux développeurs expérimentés. Workerman est un framework de développement PHP pur avec lequel il est facile de démarrer. On dit que tant que vous connaissez PHP, vous pouvez l'utiliser pour développer des services d'application socket.
Il est recommandé d'apprendre d'abord l'ouvrier, puis d'apprendre le swoole.
Évaluation des internautes 5 :
workerman est un framework de mémoire résidente implémenté en PHP pur, avec un mode de blocage synchrone. Apprenez ceci d'abord pour acquérir une certaine compréhension du mode mémoire résidente et des fuites de mémoire.
Workerman apprendra swoole après s'être familiarisé avec lui. En plus de la mémoire résidente, swoole possède également des coroutines, qui n'existent pas dans le modèle de développement traditionnel. Les coroutines sont similaires aux threads. Lors du processus de développement, il est nécessaire de se concentrer sur les problèmes de fonctionnement entre les données de chaque coroutine.
Deux : Application pratique
Évaluation des internautes 1 :
Un de mes projets open source utilise la vue projet Workerman, qui repose sur moins d'environnements et est moins difficile à développer. S'il n'y a pas des dizaines de milliers de demandes simultanées, Workman est recommandé. Mais mon expérience montre que 95 % des projets n’auront pas des dizaines de milliers de concurrence. Pour les débutants, je recommande également d'utiliser Workman. Vous pouvez également apprendre le swoole en même temps. Après tout, les coroutines économisent les ressources matérielles. De plus, l'auteur de Workerman est très patient en répondant à diverses questions. Je n'ai jamais vu des gens aussi enthousiastes.
Commentaire des internautes 2 :
swoole est une extension lorsque vous utilisez Workerman. Les choses peuvent également être utilisées, et du point de vue de l'application, je préfère Workerman GateWorker. Ceux-ci peuvent résoudre directement de nombreux problèmes et éviter la recherche fondamentale
Évaluation des internautes 3 :
workerman est plus simple et plus stable J'envisage depuis longtemps d'utiliser Swoole pour le moment. est stable après tout, il utilise du php natif. Je joue au swoole depuis un moment et il y a trop d'embûches.
Commentaire des internautes 4 :
J'ai eu du mal avec le déploiement de Swoole pendant une semaine, et j'ai finalement réussi. En pensant aux nombreuses bibliothèques et extensions tierces avec lesquelles je dois encore gérer, je pourrais tout aussi bien. eh bien, oublie ça.
Gatewayworker utilise directement l'outil XFTP pour faire glisser le dossier puis démarrer, ce qui évite bien des soucis.
Pour un novice comme moi, quels que soient les clusters, les dizaines de millions de concurrence ou les conteneurs, je choisis Gatewaywroker.
Évaluation des internautes 5 :
Personnellement, je pense que Swoole et Workerman peuvent résoudre les problèmes d'E/S à haute concurrence, mais ils utilisent deux idées. Il n’y a personne qui soit supérieur ou inférieur. Écrire des extensions PHP en C pour résoudre des problèmes semble tellement génial, mais ce n'est pas nécessairement le cas. Lors de l'écriture d'extensions PHP en C, la comparaison doit être faite par des programmeurs C, et non par des programmeurs PHP. Le langage C est alors plus avancé que le langage PHP. Dans ce cas, tout le monde peut utiliser C pour développer des sites Web.
Nouvelle recommandation de cours :
Trois : Performance
Évaluation des internautes 1 :
a dit Woole est meilleur que Workerman, c'est parce que la personne qui a commenté a Je ne l'ai jamais utilisé Workerman, il pense seulement que C++ est plus rapide que PHP, et pense qu'il en va de même pour son framework de programme.
Cependant, Workerman ne charge et n'analyse le fichier PHP qu'une seule fois, puis réside dans la mémoire, ce qui réduit considérablement les E/S disque et l'initialisation des requêtes PHP, la création de l'environnement d'exécution, l'analyse lexicale, l'analyse syntaxique, la compilation de l'opcode, la fermeture de la requête, etc. processus temporel. Donc, uniquement à partir d'une comparaison au niveau du langage, il devrait s'agir davantage de la différence entre le c++ et le code machine.
Les deux sont de très bons frameworks open source, cela dépend juste si vous préférez c++ ou php
Évaluation des internautes 2 :
En fait, les performances sont presque les mêmes, Workerman est plus stable, peut trouver des problèmes , et est plus facile à entretenir
Évaluation des internautes 3 :
D'après les scores courants, chaque indicateur de Workerman est légèrement supérieur à celui de Swoole Dans l'ensemble, les résultats de Swoole et Workerman sont similaires, mais c'est juste. un score courant. L'effet réel dépend toujours du projet lui-même.
Évaluation des internautes 4 :
Je pense qu'ils ont fait une erreur en comparant les deux côtés
workman est écrit en PHP, mais l'essence est d'utiliser pcntl et d'autres extensions pour implémenter la fonction
swoole est écrit en C/C++, mais il apparaît en fait sous la forme d'une extension PHP
Ce sont donc en fait des extensions PHP
Il compare donc en fait les performances d'extensions telles que les extensions pcntl et swoole
Alors n'est-il pas normal que workman n'est-ce pas lent ?
Évaluation des internautes 5 :
https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=db&l=zik073-1r
Il s'agit d'une organisation étrangère de tests de résistance faisant autorité www. techempower .com La 19e série de tests de résistance, avec les activités de base de données, swoole utilise un pool de connexions à la base de données + coroutine, et Workerman est l'utilisation originale du blocage PHP MySQL. La conclusion est toujours qu'il n'y a pas beaucoup de différence de performances entre les deux, et tous. les indicateurs de performance sont meilleurs que ceux de Workman, en particulier le texte en clair, qui est environ 35 % plus élevé que celui de Swoole. Bien entendu, il ne s’agit que du résultat du test de résistance, qui n’a qu’une signification de référence partielle et ne représente pas le résultat final du projet lui-même.
Nouveau cours recommandé :
Quatre : Écologie
Évaluation des internautes 1 : En raison des besoins du projet, de la maison intelligente et autres, initialement prévu pour Utilisez C Faites-le, pensez que Swoole et Workerman sont très populaires et matures, et ont de nombreux scénarios d'application stables. Pensez-y, pourquoi ne pouvez-vous pas l'essayer avec ces deux niveaux C, à quel point cela peut-il être bon avec PHP. pour répondre aux besoins ?Donc aujourd'hui j'ai une compréhension générale de swoole et Workerman, la première impression de swoole n'est pas aussi bonne que prévu, mais Workerman me surprend beaucoup...
Parlons d'abord de swoole :
swoole , le manuel en haut du site officiel ne peut pas être ouvert, puis j'ai trouvé un manuel après un long moment. Alors pourquoi l'équipe nb ne peut-elle pas rendre le site officiel plus décent, cela nécessite-t-il beaucoup de travail ? Au moins changer le manuel en haut du site officiel à la bonne adresse ? J'ai cherché le problème mais je n'ai trouvé aucune solution. J'ai posté des problèmes et des forums que j'ai également postés, mais aucune réponse...
Parlons-en. à propos de workerman :
les exemples de workerman sont très complets et les explications sont détaillées, bien meilleures que celles de swoole. Le point important est que PHP pur peut atteindre des performances aussi élevées en php-cli en php5.3. Les temps ont mûri et je ne l'ai jamais fait. J'ai eu le temps de faire des projets à grande échelle sur cette base, j'ai toujours l'impression que la performance n'est pas bonne, mais Workerman m'a surpris.
Les extensions pcntl et posix utilisées par Workerman sont également les propres extensions de PHP et seront compilées par défaut. La série de fonctions streams est les propres fonctions de PHP et il n'y a pas d'extension, donc ce que quelqu'un a dit est trop exagéré. extensions tierces. Ces deux extensions sont des extensions très matures. Elles sont si stables qu'elles sont activées par défaut dans PHP, même dans les fonctions de base de PHP. Si vous souhaitez activer Kqueue et Epoll comme Nginx, vous devez les installer. le même pecl que swoole. Extension : pecl-event. Ce sont également des extensions de base et ne seront pas instables et ne seront pas supportées par PHP7 ou PHP8. Les événements sont une encapsulation superficielle de la couche sous-jacente et n'ont aucune performance. La question dépend de la façon dont vous l'utilisez et si vous savez comment l'utiliser.
Enfin :
Je ne suis pas d'accord avec ce que Han Tianfeng a dit selon lequel swoole doit être plus avancé. En fait, les deux sont emballés pour vous, utilisez-le simplement. Mais s'il y a un problème, l'ouvrier peut comprendre le protocole et. modifier le code PHP encapsulé. . swoole ne peut pas être modifié. Au moins, vous devez connaître le langage C pour le modifier. C'est quelque chose pour lequel de nombreux PHP ne sont pas doués.
J'ai décidé d'utiliser Workerman pour le moment, car si. le problème ci-dessus se produit, je peux modifier le code PHP de Workerman pour le résoudre. Et swoole est réimplémenté en C, il y a de nombreux pièges à améliorer, et la communauté n'est pas active, personne ne s'en soucie, et je ne m'en soucie pas. Je n'ai pas eu l'énergie de vérifier le code C pour trouver la raison. J'ai découvert que beaucoup de gens avaient également essayé Swoole et trouvé que Workerman était plus stable, alors je suis passé à Workerman. En fait, j'espère toujours que Swoole pourra se développer rapidement et s'améliorer.
Ce qui précède est une opinion purement personnelle, tout est pour le développement sain et rapide de PHP. J'espère que swoole ira de mieux en mieux...
Commentaire des internautes 2 :
En fait, ils le sont. presque pareil. Il n'est pas facile de développer directement à partir de swoole ou de workerman.
Mais maintenant, vous pouvez développer sur la base de frameworks, tels que hyperf et webman. Bien sûr, si vous essayez également imi, vous constaterez qu'il n'y a fondamentalement aucune différence entre eux lors de leur utilisation.
Imi a dit, je le soutiens quand même !
Note des internautes 3 :
la documentation de Workerman est très bonne, et il existe de nombreux exemples. Je pense que Workerman est plus facile à utiliser et beaucoup plus stable que swoole
Note des internautes 4 :
Officiel. La solution est fpm+opcache+jit+long connection, ou workerman, qui est aussi stable qu'un vieux chien. C'est une solution officielle. Si vous rencontrez des problèmes, vous pouvez facilement les résoudre par vous-même.
Il n'y a vraiment aucun moyen d'introduire une synthèse de langage tiers. Si vous êtes préoccupé par les coroutines officielles de PHP ou les solutions asynchrones, vous pouvez parcourir l'extension Fibre lancée par l'auteur d'Amphp, qui est entrée en phase rfc.
Évaluation des internautes 5 :
workerman est plus conforme à l'esprit de php En tant qu'utilisateur de Workerman depuis plus d'un an, je soutiens fermement Workerman. De plus, le travailleur est vraiment sérieux et répond rapidement aux questions des débutants sur le forum, ce qui le rend extrêmement sympathique avec les débutants.
Cours de qualité recommandés :
1. Version ThinkPHP : "Bases et pratique de PHP Workerman : système de chat de messagerie instantanée" (Dernière mise en ligne le 30/11/2022)
( prix initial ¥399 yuans, Nouveau prix réduit ¥189 yuans, seulement pour 8 jours)
Adresse ouverte↓↓↓
https://www.php.cn/course/1475.html
2. Version Laravel : 《Basé sur un ouvrier imitant la messagerie instantanée Baidu Shangqiao IM (combat réel de Laravel)》 (en ligne le 12/10/2020)
(prix d'origine ¥299 yuans, remise à durée limitée prix ¥139 yuans, seulement pour 8 jours)
Adresse ouverte↓↓↓
https://www.php.cn/course/1131.html
(Consultation du cours + collecte du matériel pédagogique )
Êtes-vous d'accord avec les opinions de PHPer ci-dessus ? Bienvenue aux experts pour pulvériser !