Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
** Ce message a été déplacé dans ce forum - Il était précédemment dans le forum MVC **
Bonjour,
Je viens de commencer un site avec ZF et j'ai affiché le profiler de Zend_DB et je me rends compte qu'il y a pas mal de requêtes en doublons.
J'ai créé un model Article.php qui etend Zend_DB_Table et à chaque fois que je crée une nouvelle instance de Article() j'ai une requête "DESCRIBE `articles`"
Mon soucis c'est que si j'affiche une liste de 50 articles a chaque fois que je vais faire une nouvelle instance je vais avoir cette requête et donc 50 requêtes pour une seule page !
Au final j'ai peur d'avoir bcp d'accès à la base de données pour "pas grand chose".
Pensez-vous que c'est génant ? Y a t'il une solution pour éviter ceci ?
Peut-être ne pas utiliser Zend_DB...
Je m'en remet à votre expérience.
Merci pour vos réponses.
Cordialement,
Kaimite
Dernière modification par Kaimite (21-06-2008 15:03:44)
Hors ligne
Ca se cache avec un Zend_Cache, c'est expliqué en documentation :
Zend_Db_Table::setDefaultMetadataCache($cache);
Avec $cache, par exemple, utilisant APC (c'est ce que j'utilise comme cache OPCode):
$cache = Zend_Cache::factory('Core','APC',array('lifetime'=>7200,'automatic_serialization'=>true),array());
Hors ligne
Kaimite a écrit:
Mon soucis c'est que si j'affiche une liste de 50 articles a chaque fois que je vais faire une nouvelle instance je vais avoir cette requête et donc 50 requêtes pour une seule page !
C'est pas un peu bourrin d'instancier 50 fois le model pour afficher une liste ? xD Une instanciation + requête suffisent non ?
Hors ligne
Bonjour, ou bonsoir.
Voici comment je fait pour ma liste :
Je récupère les ids des articles demandées :
$select = $this -> select()
-> from($this -> _name, 'uid')
-> where('`rubriques_id` = ?', $rubriques_id)
-> where ("`actif` = '1'")
-> order ("date_ajout DESC");
$Rows = $this -> fetchAll($select);
if ( sizeof($Rows) > 0 ) {
foreach ($Rows AS $Row) {
$Row = $Row -> toArray();
$Retour[] = new Article($Row['uid']);
}
return $Retour;
}Comme çà pour chaque article je peux utiliser ses méthodes :
$unArticle -> recupererInfos();
$unArticle -> preparerInfosPourWeb();
etc.
J'ai donc bien x instance de ma class Article();
Comment faites-vous de votre coté ?
Merci de vos réponses.
Cordialement,
Kaimite
Hors ligne
Pages: 1