Comment utiliser la classe Zend_Cache
au sein de Zend Framework ?
Dans cet exemple nous allons d’abord initialiser notre objet de cache dans le Bootstrap de l’application, puis écrire un test de cache dans un controller.
L’exemple suivant utilise l’extension APC, pour l’utiliser il faut installer le paquet php-apc
.
Boostrap.php
protected function _initCache()
{
// pas de cache pour l'environnement de test
if (APPLICATION_ENV === 'production') {
$caching = true;
} else {
$caching = false;
}
$frontendOptions = array(
'lifetime' => 3600 * 10,
'automatic_serialization' => true,
'caching' => $caching
);
$backendOptions = array(
'cache_dir' => APPLICATION_PATH . '/cache',
'compression' => false
);
$cache = Zend_Cache::factory(
'Core',
'APC',
$frontendOptions,
$backendOptions
);
Zend_Registry::set('cache', $cache);
}
IndexController.php
public function indexAction()
{
$cache = Zend_Registry::get('cache');
//$cache->clean(Zend_Cache::CLEANING_MODE_ALL); // à décommenter pour nettoyer le cache
$cache->save(
array('test' => 'coucou', 'value' => 145),
'idMonTest',
array('tagA', 'tagB', 'tagC')
);
if (($data = $cache->load('idMonTest')) === false) {
$data = array('test' => 'coucou', 'value' => 145);
$cache->save($data);
} else {
echo 'cached !';
}
var_dump($data);
$cache->remove('idMonTest');
var_dump($cache->load('idMonTest'));
}