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 :
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!