begin process at 2012 05 31 13:14:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Bases de données

 > 

quand faire un mysql_close()


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

quand faire un mysql_close()

jeudi 11 août 2005 à 12:12:39 | quand faire un mysql_close()

davwart


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]
jeudi 11 août 2005 à 14:23:27 | Re : quand faire un mysql_close()

Anthomicro

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 :

$mysql->requete('SELECT...',0,1,0);
$mysql->requete('SELECT...',1,0,0);
$mysql->requete('SELECT...',2,0,1);

tu vois le truc ?

    jeudi 11 août 2005 à 14:40:55 | Re : quand faire un mysql_close()

    davwart

    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]
    jeudi 11 août 2005 à 15:19:50 | Re : quand faire un mysql_close()

    Anthomicro

    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...)


      jeudi 11 août 2005 à 21:44:20 | Re : quand faire un mysql_close()

      FhX

      PHP fait un mysql_close() automatiquement en fin de script ! Voila pourquoi certains sites ne l'écrivent pas.
      jeudi 11 août 2005 à 21:52:39 | Re : quand faire un mysql_close()

      Anthomicro

      oui mais il ne faut pas faire ça, car tu auras plus facilement des erreurs de max_users_connections


        jeudi 11 août 2005 à 22:08:24 | Re : quand faire un mysql_close()

        FhX

        En même temps, y'a tellement de modules et autres trucs à la con que c'est normal qu'ils laissent tout ouvert.

        Autrement, autant faire une fonction type :
        function last_query($query) {
          $query = mysql_query("SELECT....");
          mysql_close();
          return $query;
        }
        pour pouvoir faire sa dernière query.

        Car généralement, on sait tous ou se termine (normalement) notre script, donc il ne devrais pas y avoir de problème.

        jeudi 11 août 2005 à 22:09:03 | Re : quand faire un mysql_close()

        FhX

        Honte à moi, j'ai mal écrit ma fonction :(
        jeudi 11 août 2005 à 22:30:46 | Re : quand faire un mysql_close()

        Anthomicro

        " En même temps, y'a tellement de modules et autres trucs à la con que c'est normal qu'ils laissent tout ouvert."

        C'est pour ça que choisir un CMS ou un forum tout fait doit se faire en connaissance de cause.


          vendredi 12 août 2005 à 08:54:06 | Re : quand faire un mysql_close()

          davwart


          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]

          1 2

          Cette discussion est classée dans : php, mysql, db, query, close


          Répondre à ce message

          Sujets en rapport avec ce message

          aide hebergeur [ par mohamed6 ] voila je voudrais savoir ce qu'il faut mettre à la place $dbroot$dbunser$dbpass$url$cheminpour $dbpass je suppose que c'est le mot de passe et le rest Php et mySql => Pb de boucle [ par ibti25 ] Bonjour,J'ai un souci pour récupérer tous les sous familles de mes familles. En effet, j'ai une table famille :CREATE TABLE famille ( idfamille int(1 deux pb dans mon code php!! [ par dev10 ] voilà mon prbolème, si squelqu'un peut m'aiderWarning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\....doc.php on l php/pear/mysql [ par manymal ] Bonjours à toi source de connaissances. j'ai une erreur : "Fatal error: Call to a member function on a non-object in c:\program files\easyphp1-7\w Paramètre d'entrée dans un script PHP [ par zeldoi5 ] Bonjour tout le monde, je ne sais pas si le titre est suffisemment évocateur, mais je voudrais passer le résultat de requêtes SQL (sur ma base MySQL) Affichage table [ par nagattaque ] Bonjour a tous.... Je vous explique mon problème : J'ai une table qui contient des plats. Il y a 3 types de plats : entrée, plat, dessert. Je voudrai Help !!! probleme de connection BDD et affichage dans une pasge php [ par chapata ] Bonjour a tous,J'ai installer EasyPHP en début de semaine et je me suis mit depuis peu aux BDD (mysql et php), et j'ai une question pour vous :J'ai cr Requete SQL incorrecte ?!? [ par Teclis01 ] Voil¨¤ le code fait ce qui lui ait demand¨¦ pourtant il m affiche un warning ... on m a dit que cela venait de ma requete mais je reste sceptique ...j Optimisation de connection a une base de donn?|e SQL [ par Teclis01 ] Voil¨¤ en fait j aimerais savoir comment optimiser les connection a une bas de donn¨¦es SQL. J aimerais savoir ds quel cas on doit se reconnecter a un Problème d'Affichage [ par DCO2 ] Bonjour,Voilà j'explique mon problème:J'ai une page qui doit s'afficher lorsque l'internaute s'est inscrit. jusque là tout marche bien.Il reçois le ma


          Nos sponsors


          Sondage...

          Comparez les prix

          CalendriCode

          Mai 2012
          LMMJVSD
           123456
          78910111213
          14151617181920
          21222324252627
          28293031   

          Consulter la suite du CalendriCode

          Photothèque

          A découvrir



           
          Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
          CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
          CodeS-SourceS.com© est une marque déposée tous droits réservés

          Google Coop CodeS-SourceS Google Coop CodeS-SourceS
          Temps d'éxécution de la page : 0,406 sec (4)

          Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales