IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Performance de la requête connexion à MySQL


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 109
    Par défaut Performance de la requête connexion à MySQL
    Bonjour,

    Sur les pages de mon site j'utilise souvent le code suivant pour me connecter à la base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $db = mysql_connect('host', 'login', 'pass');
    mysql_select_db('name',$db);
    ...
    mysql_close();
    Par exemple dans mon header.php je l'utilise et dans la page index.php, qui inclue le header.php je l'utilise aussi plus bas dans le code.
    Je l'utilise aussi dans d'autres pages en plusieurs endroits de celles-ci, toujours en ouvrant et fermant la connexion plusieurs fois par page.

    J'aimerais savoir si c'est comme cela qu'il faut faire ou si les performances seraient bien meilleures en n'ouvrant qu'une seule fois la connexion au début de la page et en la fermant à la fin (bien que la fermeture soit censée être effectuée automatiquement à la fin d'un script) ?
    Devrais-je utiliser une petite function connection () stockée dans un fichier functions.php appelé via un requête () et me permettant d'ouvrir une connexion plus facilement et de ne pas m'en faire pour les changement de password/nom de base/... ?

  2. #2
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Je ne sais pas si c'est mieux ou pas, mais j'ouvre la connexion au tout début et je ne la ferme pas, flemmingite aiguë oblige...

  3. #3
    Membre Expert
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Par défaut
    j'avoue que moi non plus je ne sais pas car je travaille en connection permanente. Cela dit j'ai creer une fonction pour la connexion dans un fichier fonction.php et je l'appelle dans une classe (query qui se trouve dans le meme fichier) qui me gere toutes mes requetes mysql

  4. #4
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Par défaut
    8) je pense que c'est preferable pour la lecture de faire les ouveretures et fermetures qu'une fois....
    mais honnetement cela peut devenir problematique sur certains projets...
    enfin pour ce qui d'optimiser ton code un minimum de declaration de connexion doit être preferable ... difficile à dire
    le mieux c'est un petit benchmark perso ( => fo vraiment etre insomniaque)

    Bon dev'

  5. #5
    Membre émérite
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    Hello,

    ARG. Sur mes machines le plus couteux quand je fais une requete, c'est bien souvent la connexion... Alors si je devais me connecter/déconnecter à chacune d'entre elle, ce serait un gros goulet d'étranglement.

    Coté structure du code, je te conseille d'utiliser une classe/bibliothèque, même minimaliste du genre :

    1) une méthode "query", qui se chargerait de se connecter à la base de données si pas déjà fait (et s'il se connecte, force la deconnexion via un register_shutdown_function, pour éviter les problèmes dans le cas d'un bug de PHP)
    2) une méthode "quote", qui se charge également de se connecter à la base de données si besoin, puis renvoi "'".mysql_real_escape_string( $string, $this->handle )."'"
    3) une méthode fetch() qui fait le mysql_fetch_assoc() et se charge de faire le mysql_free_result() une fois arrivé sur le dernier enregistrement
    4) quelques méthodes "utiles" du genre : affected_rows() et insert_id()

    Rien de bien compliqué en soit, on pourrait faire beaucoup mieux, mais il s'agit là du minimum (pour moi).

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 109
    Par défaut
    Ok, donc le mieux est d'ouvrir une fois pour toute la connexion au début de la page et de ne la fermer qu'à la fin de la page, si j'ai bien compris ?

    Citation Envoyé par Kioob
    Hello,

    ARG. Sur mes machines le plus couteux quand je fais une requete, c'est bien souvent la connexion... Alors si je devais me connecter/déconnecter à chacune d'entre elle, ce serait un gros goulet d'étranglement.

    Coté structure du code, je te conseille d'utiliser une classe/bibliothèque, même minimaliste du genre :

    1) une méthode "query", qui se chargerait de se connecter à la base de données si pas déjà fait (et s'il se connecte, force la deconnexion via un register_shutdown_function, pour éviter les problèmes dans le cas d'un bug de PHP)
    2) une méthode "quote", qui se charge également de se connecter à la base de données si besoin, puis renvoi "'".mysql_real_escape_string( $string, $this->handle )."'"
    3) une méthode fetch() qui fait le mysql_fetch_assoc() et se charge de faire le mysql_free_result() une fois arrivé sur le dernier enregistrement
    4) quelques méthodes "utiles" du genre : affected_rows() et insert_id()

    Rien de bien compliqué en soit, on pourrait faire beaucoup mieux, mais il s'agit là du minimum (pour moi).
    Je ne comprends pas ton histoire de fichier classe/bibliothèque. Par exemple pour mysql_fetch_assoc(), cette fonction je l'utilise dans mes scripts quand j'en ai besoin. Qu'est-ce que je pourrais mettre dans ma classe/bibliothèque pour cette fonction ??

    Désolé je ne suis pas encore très bon en programmation...

Discussions similaires

  1. [MySQL 5]Performance d'une requêtes select
    Par SuperCed dans le forum Requêtes
    Réponses: 8
    Dernier message: 01/08/2006, 12h51
  2. Erreur connexion mysql
    Par bodbod dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/07/2004, 09h28
  3. Connexion mysql
    Par olive.m dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 18/06/2004, 17h44
  4. [Connexion MySQL] Can't connect to MySQL server
    Par mat_dum dans le forum Outils
    Réponses: 12
    Dernier message: 17/07/2003, 07h49
  5. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo