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

Regroupement de connexions vs connexion persistante mysqli

Terme en fait regroupement de connexions et connexion persistante se référer à la même chose en cas de mysqli en PHP.

Connexion persistante dans ce cas, fait référence à la connexion MySQL ouverte à partir du script PHP qui reste ouverte après la fin de l'exécution du script, pour être réutilisée dans certaines exécutions ultérieures.

Regroupement de connexions signifie qu'il existe un pool de connexions persistantes maintenues par PHP. Une connexion inactive de ce pool est donnée au script PHP qui veut se connecter à MySQL et renvoyée au pool lorsque le script se termine.

Vous vous demandez peut-être pourquoi avons-nous besoin du pool de connexions MySQL, pourquoi n'utilisons-nous pas une seule connexion persistante pour tous les scripts ?

Il y a deux raisons à cela :

  • PHP crée un pool de connexions MySQL basé sur host/port/username/password utilisé. Si un script veut se connecter à MySQL avec un host/port/username/password combinaison, PHP recherche une connexion persistante inactive qui a les mêmes valeurs. S'il n'est pas trouvé, une nouvelle connexion persistante est créée avec ce host/port/username/password combinaison. Nous avons donc besoin d'au moins autant de connexions persistantes différentes qu'il y a de différents host/port/username/password valeurs utilisées par tous les scripts.
  • Vous ne pouvez pas exécuter deux commandes SQL sur une même connexion MySQL en même temps. Cela peut se produire lorsque deux scripts PHP s'exécutent simultanément. Lorsque deux scripts veulent communiquer avec MySQL en même temps, deux connexions MySQL persistantes sont créées. Le nombre de connexions persistantes dans le pool est égal au dernier nombre de scripts PHP parallèles maximum exécutés, ou égal à la limite supérieure définie dans php.ini .

Avis important :

Les pools de connexion MySQL (et tout autre pool de connexion) ne peuvent exister que si PHP s'exécute en tant que plug-in de serveur Web . Les pools ne fonctionnent pas lorsqu'ils fonctionnent en mode fast-cgi ou de toute autre manière lorsque l'exécutable PHP se termine après l'exécution du script.

Modifier :le regroupement de connexions MySQL peut être utilisé en mode fast-cgi de PHP si le serveur Web est configuré pour réutiliser un processus PHP fast-cgi pour plusieurs requêtes. Si le processus PHP fast-cgi est configuré pour se fermer après avoir servi une requête, toutes ses connexions MySQL sont fermées.