Page 1 sur 1

quand fermer la connection à connexion Mysql ?

Posté : 31 juil. 2009, 15:45
par tuttifrutti
Bonjour, je me pose une petite question de performance :

Sur une page éxécutant en moyenne une dizaine de requêtes sur un hébergement mutualisé, est-il mieux de se connecter / se deconnecter à chaque requête, ou se connecter au début du script et couper la connexion à la fin ?
Pour le moment je pratique la première méthode, par peur de dépasser le nombre de connctions simultanées autorisé si le nombre de visiteurs augmente. Mais je ne suis pas sûr d'avoir raison, je pourrais avoir quelques avis s'il vous plais ?

Merci d'avance :D

Posté : 31 juil. 2009, 15:57
par Victor BRITO
Le premier conseil qu'on puisse donner, c'est d'éviter les connexions persistantes. Autrement dit, utiliser la fonction mysql_connect() plutôt que mysql_pconnect(), par exemple ; ou bien, avec PDO, ne pas utiliser la valeur PDO::ATTR_PERSISTENT lors de l'instantiation d'un nouvel objet PDO.

Le deuxième conseil consiste à clore la connexion quand on n'en a plus besoin, avec mysql_close() ou bien, avec PDO, en détruisant l'objet PDO comme suit :
// Nouvel objet PDO
$pdo = new PDO ('mysql:host=localhost;dbname=ta_base', 'root', 'root');

// Qui est à présent détruit
$pdo = null;
Un autre conseil fort utile consiste à libérer les ressources lorsqu'on n'a plus de besoin d'effectuer des requêtes SQL, au moyen de mysql_free_result() (je n'en ai pas trouvé d'équivalent en PDO, mais le conseil précédent suffit).[/php]

Posté : 31 juil. 2009, 15:57
par narcisse
L'ouverture / fermeture de connexions à une base de données est lourde, en général (plus vrai sous oracle que sous mysql).

Tu coupes la connexion après exécution de toutes les requêtes, c'est beaucoup plus performant.

Et si tu utilises PDO, il me semble qu'il y a moyen de conserver une connexion constamment ouverte fournie à PDO, ce qui est nettement plus rapide.

Posté : 31 juil. 2009, 16:17
par enneite
oui, on ouvre la connexion en debut de script et on la ferme en fin de script, enfin quand on n'en a plus besoin.
C'est inutile dans 99,9% des cas d'avoir plus d'une ouverture de connexion par script.

Pour un comparatif, les requete se suivent, c'est un peu comme dans un demenagement.
Il y a une suite de déménageurs qui vont du rez de chaussé à ton etage pour deposer et enlever des paquets.

te connecter à chaque requete équivaudrait alors au fait suivant :

chaque demenageur ouvre la porte de chez toi, enleve ou prend le paquet puis ferme la porte à clef. Puis le demenageur suivant ressort la clef de sa poche, ouvre la porte enleve/prends le paquet puis referme la porte à clefs, etc...

Bref, cela ralentit enormement le script.

Il faut ouvri la porte au debut du demenagement et ne pas oublier de la refermer à la fin.

Si tu execute un script qui dure deux jour avec une requete courte le premier jour et une requete courte le second, bah dans ce cas extreme, ouais, vaudrait mieux ouvrir la connexion à chaque fois, (mais je ne connais pas de cas comme ça en fait...)

Posté : 31 juil. 2009, 16:23
par tuttifrutti
Merci pour vos réponses. Je vais donc modifier mon script pour qu'il n'y ai plus qu'une connection pour toute les requetes de la page.

Mais chez mon hébergeur, le nombre de connections à Mysql simultanées autorisées est très retreint (genre 3 ou 4 je ne sais plus au juste). Cela ne risque pas de poser des problème en cas de forte affluence sur le site ?

Posté : 31 juil. 2009, 16:27
par narcisse
Non ça ira ^^.

Re: quand fermer la connection à connexion Mysql ?

Posté : 05 févr. 2010, 16:17
par STunisino
salut et bonjour a tous

je voudrais s'avoir comment je peut tenir une connection ouverte en sachant que ma connection s'effectue a travers une fonction ??
j'ai 2 fonction A et B
dans A est la connection
quand je fait des requete dans la fonction B une erreur me dit qu'il y'a pas de lien ouvert !

pouvez vous m'aider SVP

Re: quand fermer la connection à connexion Mysql ?

Posté : 05 févr. 2010, 16:20
par stealth35
montre ton code

Re: quand fermer la connection à connexion Mysql ?

Posté : 08 févr. 2010, 12:08
par zeus
Modération :
Si tu as une autre proposition ouvre un nouveau sujet,
cela te permettra d'avoir plus de réponses.

En plus, tu pourras mettre [Adopté] dès que ta proposition évoquée ici sera prise.

Merci de prendre le temps de lire les règlements.