Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-04-2008 01:45:15

Akira59
Nouveau membre
Date d'inscription: 09-04-2008
Messages: 2

[Résolu] [Zend Cache] Le cache ne fonctionne pas

Tout d'abord bonjour à tous, voilà je me met au Zend Framework depuis quelques semaines et j'ai actuellement un problème de cache. Le cache a déjà fonctionnait mais je ne comprend pas pourquoi aujourd'hui il ne fonctionne plus. J'ai donc fait une save de mon projet et là je suis en train de faire un test avec une version simplifiée mais ca ne fonctionne toujours pas. Voici le code pour l'action index du contrôleur index

Code:

<?
Zend_Loader::loadClass('Aki_Controller_Action');
class IndexController extends Aki_Controller_Action 
{      
    public function init()
    {
        self::_init();

        require_once 'Zend/Cache.php';
        $frontendOptions = array('lifetime' => 7200);
        $backendOptions = array('cache_dir' => 'cache');
        // obtenir un objet Zend_Cache_Frontend_Page
        $cache = Zend_Cache::factory('Page', 'File', $frontendOptions, $backendOptions);
        $cache->start();
    }
    
    public function indexAction()
    {            
        require('fr/default.lang');
        require('fr/visiteur.lang');
        require('Func/viewVisiteur.php');
        // on indique le layout à utiliser
        Aki_Registry::getLayout()->setLayout('visiteur');
        // envoi les données communes au contrôleur quelque soit l'action
        $this->view->base = self::$config->general->url;
        $this->view->charset = self::$config->general->charset;
        $this->view->style = self::$config->general->url.self::$config->path->stylePath.'/visiteur.css';
        viewMenu($this);
        viewFooter($this);
        
        // envoi des variables d'entête
        $this->view->title = ACCUEIL_TITLE;
        $this->view->description = DEFAULT_DESCRIPTION;
        $this->view->keywords = DEFAULT_KEYWORDS;
        $this->view->entete = ACCUEIL_ENTETE;
        $this->view->bloc1 = ACCUEIL_BLOC1;
        $this->view->bloc2 = ACCUEIL_BLOC2;
        $this->view->bloc3 = ACCUEIL_BLOC3;
    }
}
?>

Bon le code dans l'indexAction est pas propre pour le moment mais c'est juste pour tester, je m'intéresse surtout au code:

Code:

require_once 'Zend/Cache.php';
$frontendOptions = array('lifetime' => 7200);
$backendOptions = array('cache_dir' => './cache/');
// obtenir un objet Zend_Cache_Frontend_Page
$cache = Zend_Cache::factory('Page', 'File', $frontendOptions, $backendOptions);
$cache->start();

c'est a peu prés le même que dans la doc en plus simple, je n'ai aucune erreur lors de l'execution mais aucun fichier ne se met dans le repertoire cache. Même si je met le code du cache dans l'indexAction, ça fait pareil. Ce qui me rend dingue c'est qu'il a déjà marché et je ne vois pas pourquoi il ne fonctionne plus maintenant.
Pourriez vous m'aider car là je bloque totalement et je ne vois vraiment pas le prob.
Merci beaucoup à vous

Dernière modification par Akira59 (09-04-2008 18:39:43)

Hors ligne

 

#2 09-04-2008 09:33:16

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Résolu] [Zend Cache] Le cache ne fonctionne pas

Bonjour,

Je n'ai utilisé que le cache core, mais a priori, je dirais qu'il y a un problème dans ton code :
tu fais

Code:

$cache->start();

A priori je pense qu'il faut un id de cache en paramètre de start():

Code:

$cache->start("maPage");

Et il me parrait probable que la page ne soit réellement enregistrée sur le disque que quand tu fais le $cache->end() associé.

Cela dit dans ton cas, il y a un truc un peu foireux, parce que à la fin de ton action, tu ne peux pas appeler le $cache->end() parce que la vue n'est pas encore appelée donc le site n'a rien généré encore.

A mon avis il serait judicieux de mettre ton $cache->start($id) dans le dispatchLoopStartup() d'un plugin et ton $cache->end() dans le dispatchLoopShutdown() du même plugin.

A+, Philippe
PS : tu as une doc qui explique le principe des plugins et des helpers en cas de besoin : http://www.kitpages.fr/zf_helper_plugin.php


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 09-04-2008 10:03:09

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: [Résolu] [Zend Cache] Le cache ne fonctionne pas

Le cache 'Page' n'a pas de end(). La fin c'est lorsque la page est envoyée.
L'id tu n'a pas besoin de le spécifier, il est calculé en fonction de $_SERVER['REQUEST_URI'] , donc attention, il ne va cacher que si il n'y a pas de GET, POST, cookie, etc.....
La doc est là

Hors ligne

 

#4 09-04-2008 18:39:08

Akira59
Nouveau membre
Date d'inscription: 09-04-2008
Messages: 2

Re: [Résolu] [Zend Cache] Le cache ne fonctionne pas

Merci à toi Julien, effectivement c'est à cause d'un cookie, je supprime les cookies de mon navigateur et là les pages se mettent en cache. Je vais donc mettre dans les options mise en cache même avec un cookie. Un grand merci à vous pour ces réponses rapides et efficaces.

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