L'extension mysqli et les connexions persistantes

L'idĂ©e derriĂšre les connexions persistantes est que les connexions entre les clients et la base peuvent ĂȘtre rĂ©utilisĂ©es par un autre processus client, au lieu d'ĂȘtre dĂ©truites et recréées de nombreuses fois. Cela rĂ©duit le coĂ»t de crĂ©ation des connexions Ă  chaque fois que l'une d'entre elles est requise, car les connexions sont mises en cache pour ĂȘtre recyclĂ©es.

Contrairement à l'extension MySQL, MySQLi ne fournit pas de fonction séparée pour ouvrir des connexions persistantes. Pour ouvrir une connexion persistante, il faut ajouter p: au nom de l'hÎte lors de la connexion.

Le problĂšme des connexions persistantes est qu'elles peuvent ĂȘtre laissĂ©es dans un Ă©tat imprĂ©visible, par les clients. Par exemple, un verrou de table peut avoir Ă©tĂ© posĂ© avant que le client ne se dĂ©connecte inopinĂ©ment. Un nouveau client va alors prendre la connexion, mais tel quel. Il faudrait alors que le nouveau venu effectue un nettoyage en profondeur de la connexion avant de pouvoir la rĂ©utiliser sans parasitage, ce qui est un inconvĂ©nient pour le programmeur.

La connexion persistante de l'extension mysqli fournit une méthode de nettoyage automatique. Le nettoyage est effectué par mysqli et inclut :

  • L'annulation des transactions actives.

  • La fermeture et destruction des tables temporaires.

  • Le dĂ©verrouillage des tables

  • La remise Ă  la valeur par dĂ©faut des variables de session

  • La libĂ©ration des commandes prĂ©parĂ©es (cela arrive toujours avec PHP)

  • La fermeture du gestionnaire

  • La libĂ©ration des verrous posĂ©s par GET_LOCK()

Cela assure que la connexion persistante est dans une condition correcte avant d'ĂȘtre remise dans le groupe de connexion, et qu'un client diffĂ©rent la reprenne.

L'extension mysqli effectue ce nettoyage en appelant automatiquement la fonction C mysql_change_user().

Le nettoyage automatique a ses avantages et ses inconvĂ©nients. L'avantage est que le programmeur n'a pas besoin de s'en inquiĂ©ter, car il est appelĂ© automatiquement. Cependant, l'inconvĂ©nient est que ce code peut Ă©ventuellement ĂȘtre un peu plus lent, car il doit ĂȘtre appelĂ© Ă  chaque fois que la connexion est retournĂ©e dans le groupe d'attente.

Il est possible de désactiver le nettoyage du code, en compilant PHP avec l'option MYSQLI_NO_CHANGE_USER_ON_PCONNECT.

Note:

L'extension mysqli supporte les connexions persistantes avec le MySQL Native Driver et avec la bibliothĂšque MySQL.

add a note

User Contributed Notes

There are no user contributed notes for this page.