Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Mon site étant maintenant casiment fini, j'aimerai mettre en place un système de cache APC.
Celui ci doit mettre en cache :
- les fichiers de mes 3 modules : Front, Admin, et Custom
- les fichiers du framework (positionnés dans vendor)
J'ai donc téléchargé et installé APC.
Ensuite dans mon module Front, j'ajoute ceci dans le fichier config/module.config.php :
'apc' => array( 'adapter' => 'apc', 'plugins' => array( 'exception_handler' => array('throw_exceptions' => false), ), 'options' => array( 'cache_dir' => realpath(__DIR__ .'/../../data/cache'), ), ),
Ensuite j'ajoute ceci dans la méthode onBootstrap(MvcEvent $e) du fichier Module.php :
$sm = $e->getApplication()->getServiceManager(); $config = $sm->get('Config'); $cache = StorageFactory::factory($config['apc']);
sans oublier ceci en début de fichier :
use Zend\Cache\StorageFactory;
Je vais ensuite me balader sur le site afin de créer du cache, et je rafraichi mon dossier data/cache.
Or celui-ci reste toujours vide.
Pourquoi ?
Merci de votre aide !
Hors ligne
Personne ?
Hors ligne
Non désolé jamais utilisé, je peu que te renvoyer sur la doc :
http://framework.zend.com/manual/2.0/en … apter.html
(mais tu a déjà du le faire ^^)
Alors peu être aura tu des infos supplémentaire ici:
https://zf2.readthedocs.org/en/release- … apter.html
Hors ligne
Oui j'ai fais comme dans la doc, et celle ci est assez vague, elle manque d'exemple..
Hors ligne
Tu a pas une erreur qui s'affiche lorsque tu parcours ton site?
Si tu met ta ligne d'exception à true:
exception_handler' => array('throw_exceptions' => TRUE),
tu aura peut être un indice ^^
Hors ligne
Non rien n'a changé
Hors ligne
Oki,
Alors désolé sans erreur je vais pas pouvoir t'aider plus ^^'
J'espère que quelqu'un qui s'y connait passera par la
Dernière modification par flobrflo (11-03-2014 12:45:08)
Hors ligne
Merci d'avoir essayé, je continu à chercher le temps que quelqu'un d'autre réponde
Hors ligne
j'ai trouvé ceci qui fonctionne, mais c'est du code Zend Framework 1
protected function _initCache() { $dir = cache; $frontendOptions = array( 'lifetime' => 3600, 'content_type_memorization' => true, 'default_options' => array( 'cache' => true, 'cache_with_get_variables' => true, 'cache_with_post_variables' => true, 'cache_with_session_variables' => true, 'cache_with_cookie_variables' => true, ), 'regexps' => array( // cache the whole IndexController '^/.*' => array('cache' => true), '^/index/' => array('cache' => true), '^/page/' => array('cache' => true), '^/search/' => array('cache' => true), '^/logout/' => array('cache' => true), // place more controller links here to cache them ) ); $backendOptions = array( 'cache_dir' =>$dir ); // getting a Zend_Cache_Frontend_Page object $cache = Zend_Cache::factory('Page', 'File', $frontendOptions, $backendOptions); $cache->start(); }
Hors ligne
Dans quel fichier tu met cela?
(un petit résumé pour ceux qui chercherait? ^^)
Hors ligne
Je pense que tu mets ça dans le onBootstrap . A mon avis il y a beaucoup plus propre faudrait que tu regardes sur les blog d'akrabat, mwop, evanDotPro etc ... Ils ont sûrement fait un article là dessus.
Hors ligne
La méthode _initCache() est dans le Bootsrap.
Par contre s'était du code qui provient de Zend Framework 1.
Moi j'aimerai faire marcher le code du ZF2 , que j'ai posté dans mon tout premier post
Hors ligne
Normalement ça ne devrait pas marcher pour ZF2 les méthodes init n'existent plus ...
Hors ligne
Non non quand je dis que ça marche, s'était sur un ancien projet sur le ZF1.
Hors ligne
Ah oui d'accord, ben là je saurais pas te dire, essaie de regarder sur les blogs si tu vois quelque chose ou sur irc. J'ai pas utilisé apc avec le ZF2 donc pas simple pour t'aider :s
Hors ligne
Ok merci, et y a t-il un autre moyen pour mettre son site en cache (autre que APC) ?
Hors ligne
Bon j'ai trouvé un code qui fonctionne :
$cache = \Zend\Cache\StorageFactory::factory(array( 'adapter' => array( 'name' => 'filesystem', 'options' => array('cache_dir'=> realpath(__DIR__ .'/../../data/cache')) ), 'plugins' => array( 'exception_handler' => array('throw_exceptions' => false), ), )); $cache->addItem('ma-cle','ma valeur');
Ca me créer un dossier "zfcache-99" dans le dossier "data/cache", avec à l'intérieur un fichier "zfcache-ma-cle.dat" avec à l'intérieur le texte : "ma-valeur".
Que dois je faire pour y mettre le zend framework et les fichiers de mon site ?
Hors ligne
Avec APC tu as aussi une configuration côté serveur à faire. Normalement il met lui aussi des choses automatiquement en cache et tu as un boolean à mettre à 0 ou 1 en fonction de si tu veux qu'apc vérifie si le fichier a été modifié depuis le cache ou non. Donc en mettant toutes les vérifs à non tu devrais gagner pas mal niveau perf.
Hors ligne
romsVLM , est ce que vous avez réussi à configurer apc pour zend framework 2 ? merci.
Hors ligne