|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre expérimenté
![]() Inscription : septembre 2005 Messages : 925 ![]() |
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? |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() |
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. |
|
|
00
|
|
|
#3 | |
|
Membre expérimenté
![]() Inscription : septembre 2005 Messages : 925 ![]() |
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:
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? |
|
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() |
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. |
|
|
00
|
|
|
#5 |
|
Membre émérite
![]() ![]() Inscription : novembre 2004 Messages : 735 ![]() |
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. |
|
|
00
|
|
|
#6 | ||
|
Membre expérimenté
![]() Inscription : septembre 2005 Messages : 925 ![]() |
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:
Citation:
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 |
||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : juin 2003 Messages : 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). |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com