Maison > développement back-end > tutoriel php > PHP peut-il gérer efficacement la messagerie en temps réel basée sur Comet ?

PHP peut-il gérer efficacement la messagerie en temps réel basée sur Comet ?

DDD
Libérer: 2024-12-31 00:26:16
original
532 Les gens l'ont consulté

Can PHP Effectively Handle Comet-Based Real-Time Messaging?

PHP peut-il alimenter la messagerie en temps réel Comet ?

On peut envisager de mettre en œuvre un chat en temps réel en utilisant PHP comme backend. Cependant, une critique courante jette une ombre sur cette idée :

"PHP serait un mauvais choix pour Comet, car il nécessite de maintenir des connexions persistantes avec chaque client de navigateur. L'utilisation de mod_php implique d'attacher un enfant Apache exclusivement pour chaque client de navigateur. client, ce qui rend la solution inévolutive."

Approfondir le problème

Pour résoudre Face à cette préoccupation, examinons les défis sous-jacents :

Gestion des threads d'Apache

Chaque requête Apache engage un thread de travail distinct jusqu'à son achèvement. Les requêtes Comet, connues pour leur longue durée, peuvent monopoliser ces threads.

Limitations d'exécution simultanée de PHP

Même si l'allocation des threads d'Apache est résolue, la nature de PHP nécessite un thread unique par demande. En conséquence, FastCGI ne parvient pas à remédier à la situation.

Continuations : au-delà de la portée de PHP

Les continuations, qui permettent la reprise des requêtes Comet lors de déclenchements d'événements, ne sont pas intrinsèquement supporté par PHP.

Possible Solutions

Malgré ces obstacles, des solutions de contournement existent :

  • MPM d'événement d'Apache : Le MPM "événement" d'Apache gère les états Keep Alive différemment, mais il reporte la "répétition" du fil jusqu'à la demande achèvement.
  • Routage de l'équilibreur de charge : En utilisant un équilibreur de charge, il devient possible de déléguer des serveurs compatibles Apache et Comet (par exemple, Jetty, Tomcat) pour gérer les requêtes sur un seul port.

Mises en garde

Ces solutions sont accompagnées mises en garde. L'événement MPM peut ne pas offrir d'améliorations significatives et l'équilibrage de charge introduit une complexité supplémentaire à l'architecture.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal