mysql_pconnect
permet au module mod_php d'Apache d'effectuer un regroupement de connexions. Vous pouvez toujours appeler mysql_close
, mais mod_php ne le fermera pas; cela invalidera simplement votre handle de ressource. Malheureusement, le module n'a aucune configuration pour cela, donc les connexions groupées sont récoltées par le serveur MySQL via son paramètre wait_timeout
. La valeur par défaut est assez élevée, donc si vous voulez en profiter, vous voudrez probablement baisser cette variable.
Le regroupement de connexions permet d'économiser deux choses: la configuration de la connexion et la création du thread MySQL. La configuration de la connexion est très rapide avec MySQL par rapport à d'autres bases de données, mais un site web très demandé pourrait encore bénéficier de la réduction de cette étape. Le coût de la création de thread dans MySQL dépend plus du système d'exploitation sous-jacent, mais il peut toujours être une victoire pour un site occupé.
Les deux aspects doivent être pris en compte dans la vue d'ensemble de la vitesse du site Web et de la charge qu'il présente sur votre base de données. Il est possible de manquer de threads de connexion sur la base de données avec un site suffisamment occupé en utilisant le pool de connexion. Il y a aussi l'aspect que votre application doit faire de son mieux pour laisser la connexion dans un état cohérent, car vous ne pouvez plus compter sur la fermeture de la connexion pour faire des choses comme déverrouiller des tables et des transactions de restauration.
Il y a plus d'informations dans le PHP documentation.