Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 19-05-2010 15:40:48

arnolem
Membre
Lieu: Rouen
Date d'inscription: 15-04-2010
Messages: 12
Site web

[Résolu] Zend_Cache - Mettre en cache une méthode

Bonjour à tous,

J'ai une problématique à vous soumettre.

Contexte :
Sur un site catalogue, je souhaite mettre en cache mon menu contenant l'ensemble des catégories du catalogue. Pour ce faire, je suis parti sur un cache de haut niveau afin de mettre en cache directement le code HTML de celui-ci.
Dans mon controller Catalogue, j'ai créé une méthode _loadSideMenu() que j'appel dans chacune des Actions de ce même controller afin de charger le placeholder qui recevra ce menu.

Problématique
Afin de faire ça, j'ai configuré mon cache frontend avec le gestionnaire "Function" car j'ai cru voir que c'est avec celui-ci que l'on pouvait mettre en cache un retour de fonction. (Si je fais fausse route, n'hésitez pas à me le dire)

Afin de charger mon menu tout en le metant en cache, j'ai voulut passer par la méthode call

Code:

$cache = Zend_Registry::get('cache');
$cache->call(array($this, '_loadSideMenu'));

Le problème, c'est que j'ai une exception car call ne peut pas gérer de méthode comme call_user_func_array, il ne peut gérer que des functions.

D'ailleurs, voici l'extrait du Zend Framework qui lève l'exception :

Code:

    private function _makeId($name, $parameters)
    {
        if (!is_string($name)) {
            Zend_Cache::throwException('Incorrect function name');
        }
        if (!is_array($parameters)) {
            Zend_Cache::throwException('parameters argument must be an array');
        }
        return md5($name . serialize($parameters));
    }

Questions

Peut-on mettre en place un système de cache de cette manière avec la méthode Call ?
Comment indiquer à Call de prendre en compte une méthode ?

Merci pour votre retour et vos expériences

Dernière modification par arnolem (19-05-2010 16:16:20)

Hors ligne

 

#2 19-05-2010 16:16:03

arnolem
Membre
Lieu: Rouen
Date d'inscription: 15-04-2010
Messages: 12
Site web

Re: [Résolu] Zend_Cache - Mettre en cache une méthode

Concernant la question sur l'appel d'une méthode, j'ai trouvé. Il faut utiliser le gestionnaire de cache Zend_Cache_Frontend_Class à la place de Zend_Cache_Frontend_Function. Méaculpa, J'avais mal lu la documentation.

Concernant la méthode Call, ça ne peux pas marcher dans mon cas car j'utilise en placeholder. Je ne peux pas non plus utiliser Zend_Cache_Frontend_Output car avec le placeholder capture déjà le flux.

Je vais ouvrir un autre post plus précis sur cette question maintenant que j'ai ciblé une nouvelle problématique.

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