10
votes

Qui est meilleur: mysql_connect ou mysql_pconnect

Je suis un PHP Newbie Travailler quelques scripts pour afficher des articles de presse d'une base de données et je voulais trouver quelques choses.

  • 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 type de scénario une connexion persistante sera appelée?

1 commentaires

3 Réponses :


19
votes

Si vous allez écrire une page Web, il n'y a pas besoin de connexion persistante. Il faut trop de ressources. Utilisez mysql_connect. Minimisez le temps que votre connexion DB est ouverte et non utilisée autant que vous le pouvez. Ouvrir, aller chercher ce que vous voulez, fermez. Il n'a pas besoin de rester ouvert pendant que les utilisateurs ne font que lire. La connexion sera utilisée éventuellement si elles répondent - insérer / aller à une autre page ..

ici sont de bons points sur sans utiliser Connexion persistante dans les applications Web

  • Lorsque vous verrouillez une table, il est normalement déverrouillé lorsque la connexion se ferme, mais comme les connexions persistantes ne se ferment pas, aucune tables vous laisser accidentellement verrouillé restera verrouillé et le seul moyen de Déverrouillez-les, c'est attendre que la connexion soit temporelle ou tuez la traiter. Le même problème de verrouillage se produit avec les transactions. (Voir Commentaires ci-dessous le 23-APR-2002 & 12-JUL-2003)

  • Les tables normalement temporaires sont supprimées lorsque la connexion se ferme, mais comme les connexions persistantes ne se ferment pas, des tables temporaires ne sont pas si temporaire. Si vous ne laissez pas explicitement abandonner des tables temporaires lorsque vous sont terminés, cette table existera déjà pour un nouveau client réutilisant la même connexion. Le même problème se produit avec la séance de réglage variables. (Voir les commentaires ci-dessous le 19 nov-2004 et 07-août 2006)

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

  • Apache ne fonctionne pas bien avec des connexions persistantes. Lorsqu'il reçoit une demande d'un nouveau client, au lieu d'utiliser l'un des enfants disponibles qui a déjà une connexion persistante ouverte, elle a tendance à apparaître un nouvel enfant, qui doit alors ouvrir une nouvelle base de données lien. Cela provoque des processus excédentaires qui dorment juste, gaspiller des ressources et causer des erreurs lorsque vous atteignez votre maximum Les connexions, plus il défait tout bénéfice des connexions persistantes. (Voir les commentaires ci-dessous le 03-février-2004 et la note de bas de page à http://devzone.zend.com/node/view/id/686# FN1 )


4 commentaires

La raison pour laquelle vous utilisez habituellement MySQL_PConnect est exactement lorsque vous faites une application Web afin de ne pas avoir à effectuer le fonctionnement coûteux de la connexion à la base de données pour chaque page rendue.


Et pourquoi ma connexion devrait-elle rester ouverte pendant que je lis mon horoscope par exemple, il peut prendre 1 heure après que je demande une autre page ?!


J'ai vu cet article quelque part avant ... regarde la copie collé. Quoi qu'il en soit, cette rubrique a été explorée avant: Stackoverflow.com/questions/1128329/...


Vous devriez probablement citer la source de ces points: PHP.net/ Manuel / FR / FONCTION.MYSQL-PCONNECT.PHP # 85670 . L'utilisation de MySQL_PConnect est plus un fardeau en termes d'atteinte plus rapidement à la limite de connexion et de gérer cela, que la consommation de ressources réelle.



1
votes

Vous devriez également consulter mysqli et PDO . MySQL-Extension est assez ancienne et ne prend pas en charge les déclarations préparées MySQLI. Et PDO prend en charge plusieurs bases de données sans changer de requêtes.


0 commentaires

1
votes

Vous devez utiliser MySQL_PConnect sur des sites hautement chargés. La connexion serait donc réutilisée. Cela peut améliorer la vitesse jusqu'à deux fois ...

Mais, si vous ne vous attendez pas à des charges élevées; Utilisez Normal Connect pour des raisons Svetlozar Angelov mentionnées ci-dessus.


0 commentaires