Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Db
Zend_Db Forum d'entraide pour le composant Zend_Db du Zend Framework (création de requêtes, abstraction, ORM etc.). Avant de poster -> FAQ Zend_Db.
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 29/01/2008, 19h14   #1
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
Par défaut Gestion de base de données multiples

Bonjour,

mon équipe va probablement devoir recoder entièrement un site souffrant d'une très grosse affluence en pleine saison.

Utiliser le zend framework nous tente assez, cependant, je me demande comment gérer le fait d'utiliser plusieurs base de donnée (l'ORM n'est pas envisageable, pour des raisons de perf.)

1/ stocker dans le registre les différentes connections possibles?
lecture ecriture : session
lecture ecriture : caddie
lecture : données métier

2/faire une factory encapsulant la logique du choix de la connection

...


Qu'en pensez vous?
comment feriez vous?
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2008, 20h39   #2
Membre du Club
 
Inscription : juillet 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : juillet 2007
Messages : 70
Points : 63
Points : 63
Envoyer un message via MSN à _phoenix_
Bonjour,

Je ne sais pas si cela répondra entièrement à ta réponse, mais j'ai mis en ligne un système de setup, compatible pour Zend_Config, Zend_Cache, Zend_Db...

La doc est ici : http://code.google.com/p/zendex/wiki/ZendexSetupFR

Zendex_Setup n'est pas encore dans le SVN, il le sera ce soir.

L'objectifi de Zendex_Setup est de pouvori configurer plusieurs connexions, sans pour autant se connecter à toutes les bases de données : en effet, la connexion est faite uniquement lorsque tu souhaite récupérer ta connexion.
_phoenix_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 16h18   #3
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
Bonjour,

ta réponse est assez sympa, à analyser.


Cependant, il me semble qu'il y ait un défaut :

lorsqu'on instancie une classe se basant sur PDO, une connection a la base est créer. Elle n'est libérée qu'a la destruction de l'objet PDO.

cf : php.net
Citation:
Lorsque la connexion à la base de données a réussi, une instance de la classe PDO est retournée à votre script. La connexion est active tant que l'objet PDO l'est. Pour clore la connexion, vous devez détruire l'objet en vous assurant que toutes ses références sont effacées. Vous pouvez faire cela en assignant NULL à la variable gérant l'objet. Si vous ne le faites pas explicitement, PHP fermera automatiquement la connexion lorsque le script arrivera à la fin.
Hors, nous sommes partis dans une autre optique, pour le site dont je parle :
libérer la ressource des que la requête est finit, afin de pouvoir handler le maximum de clients simultanés (le défaut est constitué par des pics de connections imprévisibles)

Je serait donc partisan, si je devait partir dans une voie similaire a la tienne, de pre-configurer différents types de connections possibles. Via, par exemple, des constantes de classe, dont la valeur correspondrait a un DSN dans un fichier de config ZEND. Et donc, d'encapsuler l'instanciation et la destruction des objet PDO dans une surclasse correspondant aux tiennes.

C'est pour ça que je parlait de "factory".
Je ne sait pas du tout si c'est la meilleur solution, mais je partirait dans cette voie.

qu'en pense tu?
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 19h49   #4
Membre du Club
 
Inscription : juillet 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : juillet 2007
Messages : 70
Points : 63
Points : 63
Envoyer un message via MSN à _phoenix_
Bonjour,

Je n'ai pas totalement cerné ce que tu souhaites faire :

Si j'ai bien compris, tu souhaite fermer la connexion à la fin de chaque requête (sql par exemple) ?

Si oui, je ne suis pas sur que cela soit une bonne solution.

Je pense qu'il vaut mieux une connexion pour plusieurs requêtes, plutôt qu'une connexion par requête.
_phoenix_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 19h55   #5
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Comme _phoenix_, je pense que cela peut avoir un impact négatif sur les perfs si tu ouvres/fermes plusieurs fois la connexion dans un même php.

Une piste serait peut-être d'essayer de regrouper tous les traitements BDD en début de php dans la mesure du possible et d'effectuer les traitements ( calculs, affichage ) après avoir refermé la connexion.

Au final, il faudra peut-être se tourner vers une upgrade matériel pour faire face à l'augmentation de l'activité ( bien mettre en évidence les coûts/gain)
__________________
Pierre
1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
3. Un code rapide c'est bien, un code maintenable c'est mieux
...

Why was the font tag an orphan ? Because it didn't have a font-family.
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 18h49   #6
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
vous m'aviez convaicus, avec vos reponses, cependant, en relisant la doc du ZF, je suis tombé la dessus:
http://framework.zend.com/manual/en/zend.db.html
Citation:
10.1.8. Closing a Connection

Normally it is not necessary to close a database connection. PHP automatically cleans up all resources and the end of a request. Database extensions are designed to close the connection as the reference to the resource object is cleaned up.
ok, mais ensuite :
Citation:
[Note] Does Zend_Db support persistent connections?

The usage of persistent connections is not supported or encouraged in Zend_Db.

Using persistent connections can cause an excess of idle connections on the RDBMS server, which causes more problems than any performance gain you might achieve by reducing the overhead of making connections.
Et là, un doute m'envahit.

soit, je comprend mal ce que veut dire "connection persistante"
soit, j'ai bien compris, et le ZF ferme les connections a la fin de chaque requete.

donc,
je vous supplie de m'éclairer de votre savoir
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2008, 18h19   #7
Invité de passage
 
Inscription : juin 2003
Messages : 1
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 1
Points : 1
Points : 1
hello hansaplast,

Dans php, toutes les connexions sont fermées à la fin de la PAGE et non de la REQUETE, contrairement aux environnements persistants, tels que Java, dans lequel tu gardes une connexion ouverte pendant toute une session (ie. pour plusieurs pages).
alphastar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2008, 22h40   #8
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast 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 13h05.


 
 
 
 
Partenaires

Hébergement Web