Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: real34 le le 05-06-2006 a 23:12:24

Titre: Comment gérez-vous vos connections SQL
Posté par: real34 le le 05-06-2006 a 23:12:24

Bonjour,

Me revoilà avec quelques questions concernant l'ouverture/fermeture de la connection à la base de données.

J'aurais voulu savoir comment vous procédez ...
De mon côté, j'ai une fonction connect_bd() qui me retourne un lien vers la connection à la bd. A chaque fois que je veux faire une requête, je fais :

Code:
$lien_bd = connect_bd();
/* Requetes ...*/
mysql_close($lien_bd);


Le problème vient avec l'imbrication de connections ... Je m'explique : si dans ma requête je fais appel à une autre fonction afin d'obtenir une valeur, et que ma fonction est codée en autonome pour aller chercher une valeur dans la base de données (donc avec sa propre connection à la bd et son propre mysql_close), je perds ma connection dans mon script principal !

Pourtant, il me semblait que mysql_close($lien_bdd); ne ferme que le lien qui est passé ... Il se pourrait alors que le lien vers la bdd qui est dans ma fonction soit le même que celui de ma page principale vu que j'utilise la même fonction pour initialiser ma connection ...

Bref, je ne vois pas trop comment gérer tout ça sans que cela s'entrecoupe ! Je ne sais pas si tout est clair, mais j'ai énormément besoin de vos conseils !!

Merci d'avance ...

Titre: Re:Comment gérez-vous vos connections SQL
Posté par: TonTon FluBB le le 06-06-2006 a 08:26:36

Moi j'ai une page qui s'occupe de la connexion à la base de données. Quand j'ai besoin d'une connexion, j'appel cette page avec require().

Puis je fais toutes mes requêtes, et quand j'ai finit, je ferme la connexion.

Titre: Re:Comment gérez-vous vos connections SQL
Posté par: vertigo_76 le le 06-06-2006 a 11:23:28

Salut

En général je me fais une librairie de function qui sont récurentes sur toutes mais pages dont la gestion de connexion aux bases de données.

Et je l'appelle systématiquement dans mes pages

Vertigo

Titre: Re:Comment gérez-vous vos connections SQL
Posté par: real34 le le 06-06-2006 a 19:22:29

Donc en fait, si j'ai bien compris, de votre côté, vous ouvrez une connection en début de page et la refermez à la fin ??

Je faisais ça mais un jour je me suis demandé si c'était bien propre au sens où la page peut rediriger vers une autre page au cours de sa lecture ... (genre if($toto) header(location:...);)

Dans ces cas là, que devient la connection ouverte en début de page ??? Elle se fermera toute seule ?

Titre: Re:Comment gérez-vous vos connections SQL
Posté par: vertigo_76 le le 06-06-2006 a 19:31:55

Sauf erreur de ma part le header n'interrompt pas le script mais envoie des en-tete http au navigateur qui les interpretes.

Donc a mon avis le script va jusqu'a le fin et ferme la connection.

sur ce point il faudrait quand meme faire un teste du style définir une variable, faire une connexion mysql envoyer le header et inclure la variable dans une table puis fermer.

si la variable se retrouve sur la table c'est que je me suis pas trompé.(mais ce n'est que théorique)

Titre: Re:Comment gérez-vous vos connections SQL
Posté par: TonTon FluBB le le 06-06-2006 a 19:44:27

Au pire rien ne t'empêche de fermer ta connexion avant la redirection ;)

Titre: Re:Comment gérez-vous vos connections SQL
Posté par: pagepremiere le le 10-06-2006 a 19:23:24

ou tu peux verifier ta connection avant d'en re-ouvrir une autre par le lien retour lors de la connection et si jamais il y a deja une connection d'ouverte tu fais un test et ne ferme pas avant d'avoir completement fini.

$DejaConnect = 0;

$C = connection();

bla bla bla

//--- besoin d'une connection donc verif
if(!$C) {connection(); $DejaConnect = 1;}

bla bla bla

//--- Ferme la connection si plus besoin

if(!$DejaConnect) Deconnection();

bla bla bla

//--- Fin
Deconnection();


Ca peut etre aussi une solution si tu fais pas mal d'include dans tous les sens.

Titre: Re:Comment gérez-vous vos connections SQL
Posté par: erwinol le le 11-06-2006 a 13:48:38

Le problème à mon avis est que tu écrases ta variable de connexion avec la nouvelles car tu utilises le même nom.

Tu ne devrais normalement jamais avoir d'imbrication. Tes fonctions internes ne devraient jamais ouvrir elles-mêmes une connexion mais utiliser toujours une variable globale de connexion.

De cette manière, tu ouvres ta connexion. Tu fais toutes tes requêtes sur ta DB et ensuite tu fermes ... le tout avec une seule connexion.

Titre: Re:Comment gérez-vous vos connections SQL
Posté par: erwinol le le 11-06-2006 a 13:50:00

Citation de: real34 le le 06-06-2006 a 19:22:29
a page peut rediriger vers une autre page au cours de sa lecture ... (genre if($toto) header(location:...);)

Dans ces cas là, que devient la connection ouverte en début de page ??? Elle se fermera toute seule ?


Oui elle se fermera toute seule. Il est toujours conseillé de fermer la connexion le plus tôt possible mais si tu ne fais pas appel à mysql_close, la connexion se fermera automatiquement en fin de script.

Titre: Re:Comment gérez-vous vos connections SQL
Posté par: real34 le le 11-06-2006 a 18:50:15

Okay !

Pour mes prochains projets, j'essaierai de mettre ça en place alors ! Merci beaucoup pour vos astuces et vos conseils ;)


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.