Les connexions persistantes Apache/PHP/MySQL ont une si mauvaise réputation parce qu'Apache traite chaque requête comme un processus php enfant, chacun ayant une connexion persistante. Lorsque le nombre de visiteurs augmente, MySQL atteint la limite maximale de connexions de tous les processus enfants apache/php, chacun ayant une connexion persistante. Il y a aussi les problèmes de tables temporaires, de variables utilisateur, de jeux de caractères, de transactions et de last-insert-id.
Dans ma situation, nous n'avons pas à faire face à ces derniers problèmes, car nous ne faisons que LIRE à partir de MySQL. Il n'y a pas de mises à jour du db : celles-ci sont gérées par un autre ensemble de scripts sur une machine différente. Les scripts que nous voulons avoir des connexions persistantes sont le côté serveur des connexions AJAX, renvoyant des données JSON.
Chaque page vue a 5 requêtes AJAX, donc 6 processus enfant php différents sont lancés sur le serveur pour chaque page demandée (5 ajax, 1 html). Idéalement, je pourrais avoir UNE SEULE connexion du serveur php/ajax à MySQL. Cette connexion serait partagée par tous les processus enfants php.
Alors, comment puis-je faire ? Devrais-je utiliser un autre logiciel de serveur web qu'apache ? ngynx ?
salutations
MISE À JOUR : dans cette situation, la bonne façon de se connecter au serveur MySQL ( http://bit.ly/15rBDP ) :
- utilisation du pilote natif mysql (mysqlnd) et mysqli
- chaque client se reconnectant à l'aide du fonction mysql-change-user
- en utilisant MYSQLI-NO-CHANGE-USER-ON-PCONNECT dans la config. configuration de php ('car nous n'avons pas besoin de nettoyage).
UPDATE 2 :
Pour clarifier ma question, ce que je veux avoir est : Tous les processus clients php, se connectant à travers une seule connexion persistante. Cette connexion est définie, exécutée et stockée d'une manière ou d'une autre (ma question), mais tous les nouveaux processus clients php la connaissent et peuvent l'utiliser. Le problème avec apache/php est que chaque processus client php a une seule connexion. Si je sers 20.000 pages par minute, il y aura 20.000 connexions persistantes. Je veux que les 20 000 processus fils de php se connectent à une connexion unique, centrale et persistante à mysql.