Je suis en train de décider de l'architecture d'une application sur laquelle "HTTP Keepalive" et "Bulletin long" seront utilisés pour une réponse plus rapide. Y a-t-il quelque chose pour PHP qui résout le problème de la tornade pour C10K? P>
Je pensais utiliser Nginx + PHP-FPM. Mais alors, pour 1000 connexions actives, il n'y aura pas de 1000 processus PHP-FPM? P>
Puis je pense que nous aurons le même problème que Apache a avec de nombreuses connexions permanentes. N'est-ce pas? P>
EDIT: strong> Je comprends que Nginx suffira si je veux juste HTTP Keepalive. Mais que se passe-t-il si je veux aussi de longues interrogations comme des supports de tornade? Y a-t-il quelque chose de similaire dans php? P>
3 Réponses :
Je ne comprends pas ce que tu veux dire. Le C10K est lié au serveur Web (Apache, Nginx, etc.) à ne pas pHP. P>
Si vous utilisez nginx, vous ne devriez pas m'inquiéter à ce sujet p>
Ne peut pas recommander Nginx assez hautement
PHP doit être exécuté sur le serveur pour pouvoir être capable de serveur PHP Pages. Nginx gère uniquement du contenu statique ou envoie la demande à un autre processus.
Pour connexions actives (comme dans, charger et exécuter un script PHP défini), oui, il y aura autant de processus PHP que les connexions active em>. Mais Keepalive concerne les les connexions passifs em> et NGinx est très bonne pour la manipulation des connexions de conserve passifs avec une utilisation très faible des ressources - même pour des milliers d'entre eux. P>
Le problème avec Apache est celui-ci, dans la configuration habituelle avec mod_php et mpm_prefork, nécessite un processus pour chaque connexion, même si c'est juste une garde passive. Cela signifie que la plupart des serveurs Apache doivent avoir un processus PHP en mémoire, même si la connexion est passive, mais ce n'est pas le cas si vous exécutez PHP comme FastCGI. Apache peut également gérer de nombreuses connexions passifs si vous exécutez PHP comme FastCGI et choisissez le MPM_Worker qui créera un fil plus léger par connexion, mais ce n'est toujours pas aussi bon que NGinx. P>
Ma réponse à cela serait de jeter un coup d'œil à nœud.js , vous spécifiez une connexion activée de 100 000 nœud .js doit gérer bien tant que vous avez le matériel correct. P>
Node n'accorde pas de nouveaux processus lorsqu'une connexion est effectuée, la prise est placée dans un système de file d'attente, mais ce n'est pas un système de file d'attente typique, où une connexion est traitée puis le suivant. P>
nœud.js est notoire pour la manipulation de nombreuses connexions et la bibliothèque client HTTP est basée sur le style de transfert de conservation conservé, ainsi que très rapide et puissant. P>
Je l'ai utilisé juste un peu et je dois dire qu'il est extrêmement facile à utiliser, il est basé sur le moteur super rapide Google V8 utilisé pour le JavaScript en Chrome, ce qui signifie qu'il est extrêmement rapide, vous devriez vraiment jeter un coup d'œil à Ceci et vous verrez que c'est viable pour ce genre de chose. P>