Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonsoir à tous,
Je viens vers vous pour éclairer ma lanterne ! Dans le layout de mon site, je désire afficher la liste des partenaires enregistrés en BDD à deux endroits différents, et sous deux formes différentes. J'appel donc l'action correspondante de cette façon :
<?php echo $this->action('liste1', 'Partenaires'); ?> et pour l'autre façon : <?php echo $this->action('liste2', 'Partenaires'); ?>
Ces deux actions exécutent le code suivant :
$partenaire = new Model_Partenaires(); $this->view->partenaires = $partenaire->fetchAll();
Le problème est que la requête est effectuée deux fois. J'ai alors triché un peu en ajoutant un tableau en static dans la classe Model_Partenaires et je le remplis. A la deuxième action, j'utilise ce tableau, et s'il est vide j'exécute la requête. Ca fonctionne, mais je n'aime pas du tout cette solution ...
Comment réalisez vous ce genre de cache de requête dans vos applications ?
D'avance merci beaucoup et bonne nuit !
Florent
Dernière modification par tonton flubb (26-07-2009 11:15:21)
Hors ligne
Le plus simple est probablement d'utiliser Zend_Cache.
// cache configuration $frontendOptions = array( 'lifetime' => 7200, // temps de vie du cache de 2 heures 'automatic_serialization' => true ); $backendOptions = array( // Répertoire où stocker les fichiers de cache 'cache_dir' => ROOT . '/cache/' ); // créer un objet Zend_Cache_Core $cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
Et ensuite tu peux récupérer ça comme ça :
$data = $cache->load('id_de_mon_cache') ; if (!$data) { // requête SQL .. récupération des données $cache->save($data, 'id_de_mon_cache') ; }
A+
Hors ligne
Merci keilnoth pour ta réponse, je ne savais pas que Zend_Cache pouvait gérer cela, mais juste des caches de code HTML. C'est génial, je vais pouvoir en abuser !
Encore un grand merci, bonne journée.
Florent
Hors ligne
Pages: 1