2009-04-02 3 views
0

J'ai lu les spécifications de mysql_pconnect de la fonction de PHP .. "mysql_pconnect est cette connexion avec le serveur SQL n'est pas fermé même si la pratique du script est terminée".S'il vous plaît lui apprendre à propos de mysql_pconnect

Y a-t-il à moins que la connexion ne soit fermée, mais est-ce que cette connexion restera jusqu'à la synchronisation du redémarrage de mysql?

Répondre

0

oui, mais vous pouvez pas le fermer en utilisant mysql___close.

Il se ferme lorsque vous redémarrez le serveur mysql ou lorsque la connexion reste inactive (inutilisée) pendant un certain laps de temps, définie dans la variable de configuration wait_timeout.

1

Je pense, et je peux me tromper, mais ...

Je pense que le pconnect est une connexion persistante tenue non pour le fonctionnement du script, mais pendant toute la durée de la session PHP/MySQL session de, qu'il existe une connexion socket maintenue par PHP quel que soit le script en cours d'exécution. Un peu comme avoir plusieurs documents ouverts dans Word au lieu de plusieurs instances de bloc-notes en cours d'exécution. en utilisant un lien de base de données commun, la puissance de traitement pour créer des liens individuels n'est pas nécessaire.

Cependant, après lecture, je pense que cela ne semble être que bénéfique si PHP est exécuté en tant que module Apache, pas en mode CGI. Appelez-moi sur ma désinformation.

1

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.

Questions connexes