davwart
Messages postés855Date d'inscriptionmardi 19 novembre 2002StatutMembreDernière intervention28 juillet 2009
-
11 août 2005 à 12:12
marc1306
Messages postés115Date d'inscriptionsamedi 14 juin 2003StatutMembreDernière intervention31 décembre 2009
-
23 déc. 2007 à 14:41
Bonjour à tous.
J'ai retrouvé une classe MySqlDb (classe pour gérer une db mysql donc..) ce matin.
En regardant le code, je me suis rendu compte qu'à aucun moment je ne faisait de mysql_close.
D'ou ma question: quand faire un mysql_close ?
bien sur, on pourrait répondre "ben quand tu veux fermer ta connection' .... ok..
Mais ma classe doit gérer elle meme (en "privé") la libération des
ressources (je veux donc eviter que l'utilisateur fasse un
$db->close()).
J'ai donc pensé faire un mysql_close apres chaque query... mais alors
ça veut dire qu'il faut faire un mysql_connect avant chaque query... et
sur une meme page php...il peut y'en a voir pas mal de query.
Donc je me demande si le mysql_close est bien necessaire: de toute
façon la ressource sera libérée en fin de script (d'apres la
documentation: http://be2.php.net/mysql_close)
mais qu'appellet-il "fin de script"? la recontre avec un "?>" ??
car admettons que je fasse de ma variable db une variable de session (dans la page init.php):
$_SESSION["mydb"]=new MySLDb(...) // va creer ma db et se connecter au serveur...
si dans une autre page je fais
<?php
$_SESSION["mydb"]->query("SELECT.....");
?>
cette page me renvoie pas d'erreur, ce qui veut dire que ma db est tjrs
connectée... et donc que aucun mysql_close n'a été fait à la fin du
script php dans init.php.
Peut être du au fait que ma db est une variable de session ?
Vous en pensez quoi ?
-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 11 août 2005 à 14:23
Salut,
il faut fermer la connexion juste après la dernière requête (après le dernier mysql_query())
bref tu ouvres la connexion dès ta première requête, et tu la fermes à la dernière.
Pour contourner le problème j'ai fait une classe mysql (non postée ici) qui permet de gérer ça.
En gros ça donne ceci :
$mysql->requete('SELECT...',0,1,1);
le premier chiffre indique le numéro de la requête, ensuite le chiffre
suivant si il vaut 1 indique qu'il faut se connecter (mysql_connect())
et le chiffre d'après si il faut se déconnecter.
Bref si t'as trois requêtes à faire tu pourras faire ça :
davwart
Messages postés855Date d'inscriptionmardi 19 novembre 2002StatutMembreDernière intervention28 juillet 20091 11 août 2005 à 14:40
mhh..oui je vois le truc..
en effet je crois (crains?) que ce soit la seule solution.
En fait j'essayer de trouver une astuce pour que l'utilisateur ne
doivent jamais gerer la connection (et surtout la déconnection) mais je
pense que c'est pas gérable.
Ta solution est la seule gérable (j'ai à peu pres le mme principe sauf
que le numero de requete est géré par la classe et renvoyé par la
fonction requete()).
En tout cas, merci pour la réponse !
-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 11 août 2005 à 15:19
Bah c'est pour ça qu'une fois j'ai ouvert une source d'IPB, et je ne
vois jamais de gestion de déconnexion dans leurs forums, je me demande
comment ça fonctionne... (je n'ai pas cherché à savoir vu qu'IPB est
gourmand et lent, mais bon ça m'étonne, ils ne doivent pas la fermer...)
davwart
Messages postés855Date d'inscriptionmardi 19 novembre 2002StatutMembreDernière intervention28 juillet 20091 12 août 2005 à 08:54
arf!
je vois qu'il n'y a pas qu'une seule réponse...
pas évident évident....
pour l'instant, je fais un mysql_close apers chaque query..et un connect avant...
pas bcp de temps pour y reflchir + pour l'intant :(
-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
marc1306
Messages postés115Date d'inscriptionsamedi 14 juin 2003StatutMembreDernière intervention31 décembre 2009 23 déc. 2007 à 14:41
également dans ces réflection et aussi a la recherche de la classe pour mysql parfaite..
ayant test ZF ,symfonie et d'autres classes..
je crois bien qu'il va falloir faire comme beaucoup : creer sa propre classe
si quelqu'un a trouver une classe en php5 pour la gestion mysql , une classe complete , bien detaillé avec gestions des exceptions , des closes etc..
efficace simple et légé :)
meme sur ce site y'a quelques classes mais visiblement tjrs des scripts en construction