[optimisation] mysql connect close

WRInaute occasionnel
Bonjour,

Suite à la lecture de l'article optimiser mysql, que faut-il mieux faire si dans une page j'ai plusieurs requêtes sql avec traitement php derrière ?

Code:
connect bdd
requete 1
traitement php 1
requere 2
traitement php 2
close bdd

ou se connecter et se déconnecter à chaque fois, pour libérer la connection ouverte ?


Code:
connect bdd
requete 1
close bdd
traitement php 1

connect bdd
requere 2
close bdd
traitement php 2

Merci et bonne journée
 
WRInaute passionné
Au risque de dire une connerie, je serais tenté de dire que tu fermes la connections dès que tu n'a plus l'utilité.
 
WRInaute occasionnel
medium69 a dit:
Au risque de dire une connerie, je serais tenté de dire que tu fermes la connections dès que tu n'a plus l'utilité.

J'ai risqué également en posant la question :wink: c'est ce que j'aurais tenté de faire aussi ... est-ce une bonne pratique ?
 
WRInaute impliqué
Tout dépend également ton temps de "traitement php 1" ? S'il dure longtemps il est sans doute préférable de fermer ta connexion, sinon c'est peut être pas nécessaire.

Ne peux-tu pas faire :

connect bdd
requete 1
requere 2
close bdd

traitement php 1
traitement php 2
 
WRInaute impliqué
+1 pour petit-ourson :wink:

Si le temps entre les 2 requêtes est faible, fermer et réouvrir la connexion va surcharger le serveur pour rien.
En revanche, s'il y a plusieurs secondes entre les 2, et d'autres scripts qui tournent en parallèle, il vaut mieux fermer et réouvrir.
 
WRInaute occasionnel
FloBaoti a dit:
+1 pour petit-ourson :wink:

Si le temps entre les 2 requêtes est faible, fermer et réouvrir la connexion va surcharger le serveur pour rien.
En revanche, s'il y a plusieurs secondes entre les 2, et d'autres scripts qui tournent en parallèle, il vaut mieux fermer et réouvrir.

Effectivement ça semble encore mieux !

Alors comme le suggère petit-ourson (brun ou pas :wink: ) le plus optimisé serait :

Code:
connect bdd
requete 1
requere 2
close bdd

traitement php 1
traitement php 2

mettre toutes les requêtes en début de script et faire tous les traitements php après avoir fermé la connexion mysql ?
 
WRInaute discret
Salut,

Merci d'avoir cité mon article :p

Sinon en fait comme l'a très bien dit petit-ourson, ça dépend de pas mal de choses.

Le mieux est de faire ceci :

connexion
- requete
- requete
- requete [...]
déconnexion

seulement il peut arriver qu'il faille pour faire certaines requêtes, avoir besoin du traitement d'autres requêtes. Ca dépend de ce temps justement. Si ton temps de traitement est élevé, fermes la connexion puis rouvre-la ensuite (tout en sachant qu'ouvrir une connexion demande des ressources processeur importantes), sinon il vaut mieux faire toutes tes requêtes directement puis fermer la connexion ensuite ;)
 
WRInaute accro
pierre_jean a dit:
Code:
connect bdd
requete 1
traitement php 1
requere 2
traitement php 2
close bdd

ou se connecter et se déconnecter à chaque fois, pour libérer la connection ouverte ?


Code:
connect bdd
requete 1
close bdd
traitement php 1

connect bdd
requere 2
close bdd
traitement php 2

Merci et bonne journée

Ca manque un peu de contexte (hébergement mutualisé ou dédié, tout ça), mais en général, on se débrouille pour garder les connexions aux bases de données ouvertes, au point qu'il est courant de garder la même connexion d'une requête http à l'autre (connexions persistantes). Fermer et rouvrir une connexion à chaque requête c'est un joli gâchis, sauf si on est limité en nombre de connexions, ou qu'on utilise plusieurs bases de données différentes.

Bref, sans contexte, difficile de se prononcer.

Jacques.
 
Discussions similaires
Haut