5 votes

PHP : utiliser Golang pour gérer les connexions websocket

J'ai une application web assez importante construite avec SproutCore et PHP comme backend. Ce que je veux maintenant, c'est utiliser des websockets pour mettre à jour mon application cliente en temps réel. D'après ce que je sais, PHP est vraiment mauvais pour gérer les connexions persistantes. J'ai donc pensé que je pourrais utiliser Go pour gérer les connexions websockets et appeler mes scripts PHP chaque fois qu'une requête est reçue (ceci paquet semblent le rendre possible).

Ma première question est donc la suivante : pensez-vous que c'est une bonne idée (et une idée viable, je n'ai pas trouvé de personnes qui le font) ou devrais-je m'en tenir à PHP ?

Si j'utilise Go pour gérer les connexions websockets, j'ai également pensé que je pourrais progressivement abandonner PHP pour n'utiliser que Go (puisqu'il est beaucoup plus rapide que PHP). Si je fais cela, je devrai être capable d'appeler un paquetage Go depuis PHP. Est-ce que cela peut être fait avec le module PHP exec fonction ? Existe-t-il un meilleur moyen ? Et encore une fois, est-ce une bonne idée ?

9voto

Daniel Points 9676

Go est un outil naturel pour les serveurs websocket. J'ai construit des serveurs websocket en Go et j'ai été extrêmement satisfait de la façon dont tout cela a fonctionné. J'ai un service qui gère 300 000 utilisateurs par mois sur un serveur websocket Go et il utilise à peine 1% du CPU d'une micro instance Amazon AWS. Je ne pourrais pas être plus heureux.

Les websockets ont vraiment besoin de frameworks événementiels comme Go et Node.js afin d'optimiser les ressources du serveur. Les processus web dérivés comme PHP consomment beaucoup plus de ressources qu'un framework événementiel.

Si vous avez besoin d'appeler Go depuis PHP à un moment donné, je vous suggère d'utiliser les appels d'API. Bien que exec fonctionnerait aussi.

-1voto

aTTozk Points 71

C'est une vieille question, mais mes deux cents sur ce sujet...

Il existe une très bonne bibliothèque php qui fait exactement ce que vous demandez - websockets. Elle s'appelle Cliquet . Je n'utiliserais pas node.js (surestimé) ou go alors que php peut faire exactement la même chose et que c'est le langage avec lequel je suis le plus à l'aise. Dans la majorité des cas, le faible gain de performance par rapport aux websockets ne vaut pas la peine de changer de pile.

Autres liens utiles si vous prévoyez d'utiliser Ratchet :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X