2009-08-27 10 views
10

Je suis un débutant PHP qui travaille sur quelques scripts pour afficher des articles de nouvelles d'une base de données et qui voulait découvrir quelques choses.Quel est le meilleur: mysql_connect ou mysql_pconnect

  • Pour ouvrir une connexion à une base de données MySQL, qui est une meilleure option mysql_connect ou mysql_pconnect?
  • Quels sont les avantages ou les inconvénients de l'utilisation d'une connexion persistante à la base de données?
  • Et dans quel genre de scénario une connexion persistante sera-t-elle appelée?
+2

Duplication de http://stackoverflow.com/questions/247807/mysqlconnect-vs-mysqlpconnect – Oskar

Répondre

19

Si vous voulez écrire une page Web, vous n'avez pas besoin de connexion permanente. Cela prend trop de ressources. Utilisez mysql_connect. Minimisez le temps que votre connexion db est ouverte et non utilisée autant que vous le pouvez. Ouvrez, allez chercher ce que vous voulez, fermez. Il n'a pas besoin de rester ouvert pendant que les utilisateurs sont en train de lire. La connexion sera utilisée par la suite si elles répondent - INSERT/aller à une autre page ..

Here sont quelques bons points sur Ne pas utiliser connexion persistante dans les applications web

  • Lorsque vous verrouillez une table, normalement il est déverrouillé lorsque la connexion se ferme, mais puisque les connexions persistantes ne se ferment pas, toutes les tables restent verrouillées, et le seul moyen de les déverrouiller est d'attendre que la connexionprocessus. Le même problème de verrouillage se produit avec les transactions. (Voir ci-dessous commentaires sur 23-Apr-2002 & 12-Jul-2003)

  • tables Normalement temporaires sont supprimés lorsque la connexion se ferme, mais étant donné que les connexions persistantes ne se ferment pas, les tables temporaires ne sont pas donc temporaire. Si vous ne supprimez pas explicitement les tables temporaires lorsque vous avez effectué , cette table existera déjà pour un nouveau client en réutilisant la même connexion . Le même problème se produit lors de la définition des variables de la session . (Voir les commentaires ci-dessous le 19-Nov-2004 & 07-Aug-2006)

  • Si PHP et MySQL sont sur le même serveur ou réseau local, le temps de connexion peut être négligeable, dans ce cas, il n'y a aucun avantage aux connexions persistantes.

  • Apache ne fonctionne pas correctement avec les connexions persistantes. Lorsqu'il reçoit une requête d'un nouveau client, au lieu d'utiliser l'un des enfants disponibles qui ont déjà une connexion persistante ouverte, tend à engendrer un nouvel enfant, qui doit alors ouvrir une nouvelle connexion à la base de données . Cela provoque des processus en excès qui sont en train de dormir, gaspiller des ressources et provoquer des erreurs lorsque vous atteignez vos connexions maximales , plus il annule tous les avantages des connexions persistantes. (Voir commentaires ci-dessous le 03-Feb-2004, et la note à http://devzone.zend.com/node/view/id/686#fn1)

+1

La raison pour laquelle vous utilisez généralement mysql_pconnect est exactement lorsque vous créez une application web, vous n'avez donc pas à faire l'opération coûteuse de se connecter à la base de données pour chaque page rendue. – nos

+0

et pourquoi ma connexion resterait-elle ouverte pendant que je lisais mon horoscope par exemple, cela peut prendre 1 heure après que je demande une autre page ?! –

+0

Merci, les gars. Cela rend les choses beaucoup plus claires pour moi. – Kwame

1

Vous devriez également regarder mysqli et pdo. mysql-extension est assez vieux et ne supporte pas les instructions préparées par mysqli.Et pdo supporte plusieurs bases de données sans changer les requêtes.

-1

Veuillez ne plus répondre à cette question, elle a été posée et répondue ailleurs. Voir les liens ci-dessus.

+4

Ceci n'est pas une réponse, mais devrait plutôt être un commentaire. –

+2

Merci pour la marque alors :) –

+2

Je l'ai marqué parce que c'était la seule bonne chose à faire. –

1

Vous devriez utiliser mysql_pconnect sur des sites fortement chargés, ainsi la connexion serait réutilisée. Cela peut améliorer la vitesse jusqu'à deux fois ...

Mais, si vous ne vous attendez pas à des charges élevées; utiliser normalement connecter pour des raisons Svetlozar Angelov mentionné ci-dessus.

Questions connexes