Mysql
 sql >> Base de données >  >> RDS >> Mysql

Persistance de la connexion PHP MySQL

La persistance est assurée par la copie du PHP intégrée au serveur Web. Normalement, vous auriez raison - si PHP s'exécutait en mode CGI, il serait impossible d'avoir une connexion persistante, car il n'y aurait plus rien à persister lorsque la requête est effectuée et que PHP s'arrête.

Cependant, étant donné qu'une copie de PHP est intégrée au serveur Web et que le serveur Web lui-même continue de fonctionner entre les requêtes, il est possible de maintenir un pool de connexions persistantes au sein de ce PHP "permanent".

Cependant, notez que sur les modèles de serveur de type multi-worker Apache, les pools de connexion sont maintenus PAR-ENFANT. Si vous définissez votre limite de pool sur 10, vous aurez 10 connexions par enfant Apache. 20 enfants =200 connexions.

Des connexions persistantes entraîneront également des problèmes à long terme avec des blocages et d'autres problèmes difficiles à déboguer. N'oubliez pas qu'il n'y a aucune garantie que les requêtes HTTP d'un utilisateur seront traitées par la MÊME connexion apache enfant/mysql. Si un script meurt à mi-chemin d'une transaction de base de données, cette transaction ne sera PAS être annulé, car MySQL ne voit pas le côté HTTP des choses - tout ce qu'il voit, c'est que la connexion mysql<->apache est toujours ouverte et suppose que tout va bien.

Le prochain utilisateur à frapper cette combinaison enfant/connexion apache/mysql particulière se retrouvera désormais comme par magie au milieu de cette transaction, sans aucune idée que la transaction est ouverte. Fondamentalement, c'est l'équivalent Web d'une toilette sans chasse d'eau - tous les "déchets" de l'utilisateur précédent sont toujours là.

Avec des connexions non persistantes, vous avez la garantie d'avoir un environnement "propre" à chaque fois que vous vous connectez.