Préface
Workerman, conteneur d'application PHP haute performance
Qu'est-ce que Workerman ?
Workerman est un conteneur d'application PHP haute performance open source développé en PHP pur.
Workerman n'est pas une réinvention de la roue ; ce n'est pas un framework MVC, mais un cadre de service plus bas niveau et plus général que vous pouvez utiliser pour développer des proxies TCP, des proxies pour échelles, des serveurs de jeux, des serveurs de courrier, des serveurs FTP, voire même développer une version PHP de Redis, une version PHP de base de données, une version PHP de Nginx, une version PHP de PHP-FPM, etc. On peut dire que Workerman est une innovation dans le domaine de PHP qui permet aux développeurs de se débarrasser complètement des contraintes selon lesquelles PHP ne peut faire que du WEB.
En réalité, Workerman est similaire à une version PHP de Nginx, le cœur étant également basé sur une architecture multiprocessus + Epoll + I/O non-bloquant. Chaque processus Workerman peut maintenir des milliers de connexions simultanées. Étant résident en mémoire et ne dépendant pas de conteneurs tels qu'Apache, Nginx ou PHP-FPM, il offre des performances exceptionnelles. En outre, il prend en charge TCP, UDP, UNIXSOCKET, prend en charge les connexions persistantes, prend en charge divers protocoles de communication tels que WebSocket, HTTP, WSS, HTTPS et d'autres protocoles personnalisés. Il est équipé de nombreux composants haute performance comme des minuteurs, des clients socket asynchrones, Redis asynchrone, HTTP asynchrone, et des files d'attente de messages asynchrones, etc.
Quelques domaines d'application de Workerman
Workerman se distingue des frameworks MVC traditionnels ; il peut non seulement être utilisé pour le développement Web, mais possède également des domaines d'application plus vastes tels que la messagerie instantanée, l'Internet des objets, les jeux, la gestion des services, ainsi que d'autres serveurs ou intermédiaires, ce qui a sans aucun doute élargi la vision des développeurs PHP. Actuellement, il y a une pénurie de développeurs PHP dans ces domaines. Si vous souhaitez avoir un avantage technique dans le domaine de PHP, ne vous contentez pas des simples opérations CRUD quotidiennes, ou si vous souhaitez évoluer vers un rôle d'architecte ou devenir un expert technique, Workerman est un cadre qui mérite d'être appris. Il est conseillé aux développeurs non seulement de l'utiliser, mais aussi de développer leurs propres projets open source basés sur Workerman pour améliorer leurs compétences et accroître leur influence. Par exemple, le projet Beanbun, un cadre de web scraping multi-processus est un très bon exemple qui a reçu de nombreuses critiques élogieuses peu après son lancement.
Voici quelques domaines d'application de Workerman :
-
Messagerie instantanée
Par exemple, chat instantané sur le web, notifications instantanées, mini-programmes WeChat, notifications d'applications mobiles, notifications de logiciels PC, etc.
[Exemple de chat workerman-chat, web notification, salle de chat Xiaokedou] -
Internet des objets
Par exemple, communication entre Workerman et imprimantes, communication avec des microcontrôleurs, bracelets intelligents, maisons intelligentes, vélos en libre-service, etc.
[Cas clients tels que 易联云, 易泊时代, etc.] -
Serveurs de jeux
Par exemple, jeux de cartes en ligne, jeux MMORPG, etc. [Exemple browserquest-php] -
Services HTTP
Par exemple, écriture d'interfaces HTTP haute performance, sites Web haute performance. Si vous souhaitez créer des services ou des sites liés à HTTP, je recommande fortement webman -
Services SOA
Utiliser Workerman pour encapsuler différentes unités fonctionnelles de l'entreprise existante et fournir des interfaces unifiées sous forme de services, améliorant ainsi le couplage lâche, la facilité de maintenance, la haute disponibilité et la souplesse. [Exemple workerman-json-rpc, workerman-thrift] -
Autres logiciels serveur
Par exemple, GatewayWorker, PHPSocket.IO, proxy HTTP, proxy sock5, composant de communication distribuée, composant de partage de variables distribuées, file d'attente de messages, serveur DNS, serveur Web, serveur CDN, serveur FTP, etc. -
Composants
Par exemple, Redis asynchrone, client HTTP asynchrone, client MQTT pour IoT, file d'attente de messages workerman/redis-queue, workerman/stomp, workerman/rabbitmq, composant de surveillance de fichiers, et de nombreux autres composants développés par des tiers, etc.
Il est évident que les frameworks MVC traditionnels ont du mal à réaliser les fonctionnalités mentionnées ci-dessus, ce qui est la raison de la naissance de Workerman.
Philosophie de Workerman
Extrêmement simple, stable, haute performance, distribué.
Extrêmement simple
Moins, c'est mieux ; le noyau de Workerman est extrêmement simple, avec seulement quelques fichiers PHP et quelques interfaces exposées, ce qui le rend très facile à apprendre. Toutes les autres fonctionnalités sont étendues sous forme de composants.
Workerman dispose d'une documentation complète + d'un site principal autoritaire + d'une communauté active + de plusieurs groupes QQ de milliers de membres + de nombreux composants haute performance + de nombreux exemples, tout cela facilite l'utilisation par les développeurs.
Stable
Workerman est open source depuis plusieurs années et est largement utilisé par de nombreuses entreprises cotées en bourse, ce qui lui confère une stabilité exceptionnelle. Certains services n'ont pas été redémarrés depuis plus de deux ans tout en continuant à fonctionner rapidement. Pas de core dump, pas de fuite de mémoire, pas de bugs.
Haute performance
Workerman, étant résident en mémoire, ne dépend pas d'Apache/Nginx/PHP-FPM, n'a pas de surcharge de communication entre les conteneurs et PHP, et ne nécessite pas de réinitialisation de tout pour chaque demande. Cela lui confère des performances exceptionnelles, avec une performance plusieurs dizaines de fois supérieure à celle des frameworks MVC traditionnels ; sous PHP 7, il a même dépassé le QPS d'un Nginx séparé lors de tests de pression avec ab.
Distribué
Nous ne sommes plus à l'ère de l'individualisme, même le serveur le plus performant a des limites. Le déploiement distribué sur plusieurs serveurs est la voie à suivre. Workerman propose directement un ensemble de solutions de communication distribuée par connexions persistantes grâce au cadre GatewayWorker, l'ajout de serveurs nécessite simplement une configuration simple et un démarrage, sans modification du code métier, ce qui multiplie la capacité de charge du système. Si vous développez des applications TCP à connexion longue, il est recommandé d'utiliser directement GatewayWorker ; il s'agit d'un emballage de Workerman, offrant de riches interfaces et une puissante capacité de traitement distribué pour les applications à connexions longues.
Champ d'application de ce manuel
Versions Workerman 3.x - 5.x
Utilisateurs Windows (à lire absolument)
Workerman prend en charge à la fois les systèmes Linux et Windows. La version Windows de Workerman ne dépend d'aucune extension, vous avez simplement besoin de configurer correctement les variables d'environnement PHP, les instructions d'installation et les points à noter pour la version Windows de Workerman sont disponibles dans à lire absolument pour les utilisateurs Windows.
Client
Le protocole de communication de Workerman est ouvert et personnalisable, par conséquent, en théorie, Workerman peut communiquer avec des clients de n'importe quelle plateforme utilisant n'importe quel protocole. Lorsque les utilisateurs développent un client, ils peuvent établir la communication avec le serveur en fonction du protocole de communication correspondant.