Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-07-2009 00:13:08

tonton flubb
Membre
Date d'inscription: 11-10-2008
Messages: 48
Site web

[Résolu] Comment mettez vous en cache le résultat de vos requêtes

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 :

Code:

<?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 :

Code:

$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)


Florent - Développeur Web

Hors ligne

 

#2 24-07-2009 09:24:03

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: [Résolu] Comment mettez vous en cache le résultat de vos requêtes

Le plus simple est probablement d'utiliser Zend_Cache.

Code:

    // 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 :

Code:

$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+


Quelques tutoriaux Zend Framework !

Hors ligne

 

#3 26-07-2009 11:15:04

tonton flubb
Membre
Date d'inscription: 11-10-2008
Messages: 48
Site web

Re: [Résolu] Comment mettez vous en cache le résultat de vos requêtes

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


Florent - Développeur Web

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages