Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/06/2006, 11h40   #1
Invité régulier
 
Inscription : avril 2005
Messages : 24
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 24
Points : 9
Points : 9
Par défaut Optimisé l'accès à une DB Mysql

Bonjour,
Dans le cas du développement d'une application PHP, je cherche à comprendre la meilleure méthode de gestion de l'accès à la base.

Je dispose d'une classe "d'abstraction" dbManager qui a les méthodes suivantes :
- function loadDSNConfiguration () //Charge les informations à partir d'un fichier xml.
- function createSQLConnexion ()//place dans une variable privée dbManager de la classe un nouvelle object mysqli
- function getDbManager() retourne l'objet dbManager=objet Mysqli.
- function doquery() //exécute et traite et renvoie dans un tableau le résultat de la requête.

tel que je vois les choses, le problème de cette architecture, est que pour chaque page php je vais devoir créer un objet dbManager puis faire
dbManager->loadDSNConfiguration ();
dbManager->createSQLConnexion ();
dbManager->doquery($query);

D'où ma question :
comment faire pour pouvoir simplement sur chaque page exécuter une requête sans avoir à reloader les info du DSN puis recréer une connexion à la base ?

Merci d'avance.
nickola est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2006, 11h58   #2
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Salut,

il te suffit d'implémenter l'appel à ces méthodes (loadDSNConfiguration et createSQLConnexion) dans le constructeur.

si tu veux personnaliser les paramètres de connexion dans ce cas tu pourras soit jouer avec des accesseurs, soit surcharger le constructeur et passer ses paramètres aux fonctions implémentées.

__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2006, 12h11   #3
Invité régulier
 
Inscription : avril 2005
Messages : 24
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 24
Points : 9
Points : 9
Bonjour,
Tout d'abord, merci de votre réponse.

Toutefois, cela signifie que pour chaque page je vais recréer une connexion à Mysql !
Et c'est ce la que je voudrais éviter.

En fait à chaque fois que je vais avoir besoin de faire une requête dans une page, je vais imposé au système un parsage de fichier xml (même si je le met dans mon constructeur) puis une connection à la base. donc une utilisation de ressource que je souhaiterai éviter autant que possible.

Est-il possible soit de récupérer une connection existente à Mysql de manière à éviter de recréer une connection ?

Soit d'avoir une sorte de persistance de ma classe dbManager, afin qu'elle ne soit compiler qu'une fois et que je puisse y accéder de n'importe qu'elle page de mon application ? (mais en l'absence de serveur d'application je ne vois pas comment).
nickola est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2006, 12h33   #4
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
tu te réponds tout seul mon ami , en php on ne fait pas de compilation, mais de l'interprétation donc pas d'instance proprement dite... donc impossible de créer un conteneur persistant.

par contre je ne comprends pas trop ton interrogation, si tu ne construit ton objet qu'une seule fois par script, la connexion n'est donc effectuée qu'une seule fois, tu peux donc agir autant de fois que tu veux sur la methode query. évidemment, la connexion sera faite sur chaque page...

avec mysql tu pouvais utiliser le mode persistant :
mysql_pconnect()
mais il fallait bien gérer les paramètres de ton serveur, lis bien en bas de la page

__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2006, 14h06   #5
Invité régulier
 
Inscription : avril 2005
Messages : 24
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 24
Points : 9
Points : 9
En fait ma question c'était comment éviter de refaire une connection sur chaque page.
D'après la doc mysqli pour Mysql 5 je ne crois pas qu'il y aie d'équivalent à mysql_pconnect en objet.

Mais comme tu le soulignes il faut refaire une connection à la base sur chaque page php.
C'est juste qu'il semble qu'il soit plus lours de faire des création/fermeture de connection à la base que réutilisé une connection existante ou un pool de connection.
nickola est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2006, 14h29   #6
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Citation:
Envoyé par nickola
C'est juste qu'il semble qu'il soit plus lours de faire des création/fermeture de connection à la base que réutilisé une connection existante ou un pool de connection.
alors là, c'est clair... mais bon, encore une fois, on est pas dans un serveur d'application
__________________
http://cdemarche.developpez.com/

Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2006, 14h48   #7
Invité régulier
 
Inscription : avril 2005
Messages : 24
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 24
Points : 9
Points : 9
Je te remercie encore pour tes réponses.
je m'en vais de ce pas implémenter tout cela.
nickola est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h08.


 
 
 
 
Partenaires

Hébergement Web