| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.cache.cache.manager">
- <title>Le gestionnaire de Cache</title>
- <para>
- Une application comporte par nature plusieurs caches de types différents fonctions du
- contrôleur ou du modèle accédé. Afin de faciliter la création et la manipulation des
- options de <classname>Zend_Cache</classname> au plus tôt (par exemple en bootstrap),
- <classname>Zend_Cache_Manager</classname> a été créée. Cette
- classe est accompagnée de <classname>Zend_Application_Resource_Cachemanager</classname>
- pour tout ce qui concerne le bootstrap et
- <classname>Zend_Controller_Action_Helper_Cache</classname> afin d'accéder aux caches
- depuis les contrôleurs et autres aides d'action.
- </para>
- <para>
- Le gestionnaire de cache utilise des templates, ce sont en fait des ensembles de
- configurations valides pour un cache. Ces templates s'enregistrent grâce à
- <methodname>Zend_Cache_Manager::setCacheTemplate()</methodname> et ne donnent naissance
- à un objet de cache que lorsque <methodname>Zend_Cache_Manager::getCache()</methodname>
- sera appelée.
- </para>
- <programlisting language="php"><![CDATA[
- $manager = new Zend_Cache_Manager;
- $dbCache = array(
- 'frontend' => array(
- 'name' => 'Core',
- 'options' => array(
- 'lifetime' => 7200,
- 'automatic_serialization' => true
- )
- ),
- 'backend' => array(
- 'name' => 'Core',
- 'options' => array(
- 'cache_dir' => '/path/to/cache'
- )
- )
- );
- $manager->setCacheTemplate('database', $dbCache);
- /**
- * Partout ailleurs où le gestionnaire de cache est accessible...
- */
- $databaseCache = $manager->getCache('database');
- ]]></programlisting>
- <para>
- Le gestionnaire autorise aussi l'enregistrement d'objets de cache préalablement
- créés, ceci grâce à la méthode <methodname>Zend_Cache_Manager::setCache()</methodname>.
- </para>
- <programlisting language="php"><![CDATA[
- $frontendOptions = array(
- 'lifetime' => 7200,
- 'automatic_serialization' => true
- );
- $backendOptions = array(
- 'cache_dir' => '/path/to/cache'
- );
- $dbCache = Zend_Cache::factory('Core',
- 'File',
- $frontendOptions,
- $backendOptions);
- $manager = new Zend_Cache_Manager;
- $manager->setCache('database', $dbCache);
- /**
- * Partout ailleurs où le gestionnaire de cache est accessible...
- */
- $databaseCache = $manager->getCache('database');
- ]]></programlisting>
- <para>
- Si vous n'êtes pas sûr si le gestionnaire possède en lui un template de configuration
- ou un objet de cache déja enregistré, vérifiez celà grâce à
- <methodname>Zend_Cache_Manager::hasCache()</methodname>.
- </para>
- <programlisting language="php"><![CDATA[
- $manager = new Zend_Cache_Manager;
- $dbCache = array(
- 'frontend' => array(
- 'name' => 'Core',
- 'options' => array(
- 'lifetime' => 7200,
- 'automatic_serialization' => true
- )
- ),
- 'backend' => array(
- 'name' => 'Core',
- 'options' => array(
- 'cache_dir' => '/path/to/cache'
- )
- )
- );
- $manager->setCacheTemplate('database', $dbCache);
- /**
- * Partout ailleurs où le gestionnaire de cache est accessible...
- */
- if ($manager->hasCache('database')) {
- $databaseCache = $manager->getCache('database');
- } else {
- // Créer un cache à la main puisque non trouvé dans le gestionnaire
- }
- ]]></programlisting>
- <para>
- Dans certains cas, vous pouvez avoir défini un certain de cas d'utilisation avec
- <classname>Zend_Cache_Manager</classname>, mais vous avez besoin de préciser un option
- dans un cas particulier. Il est alors possible de modifier la configuration d'un template
- de cache après l'avoir saisie, ceci au moyen de
- <methodname>Zend_Cache_Manager::setTemplateOptions()</methodname>.
- </para>
- <programlisting language="php"><![CDATA[
- $manager = new Zend_Cache_Manager;
- $dbCache = array(
- 'frontend' => array(
- 'name' => 'Core',
- 'options' => array(
- 'lifetime' => 7200,
- 'automatic_serialization' => true
- )
- ),
- 'backend' => array(
- 'name' => 'Core',
- 'options' => array(
- 'cache_dir' => '/path/to/cache'
- )
- )
- );
- $manager->setCacheTemplate('database', $dbCache);
- /**
- * Partout ailleurs où le gestionnaire de cache est accessible...
- * Ici nous changeons le support de stockage vers Memcache plutôt que ce
- * qu'il était avant : File.
- */
- $fineTuning = array(
- 'backend' => array(
- 'name' => 'Memcached',
- 'options' => array(
- 'servers' => array(
- array(
- 'host' => 'localhost',
- 'port' => 11211,
- 'persistent' => true,
- 'weight' => 1,
- 'timeout' => 5,
- 'retry_interval' => 15,
- 'status' => true,
- 'failure_callback' => ''
- )
- )
- )
- )
- );
- $manager->setTemplateOptions('database', $fineTuning);
- $databaseCache = $manager->getCache('database');
- ]]></programlisting>
- <para>
- Pour rendre le gestionnaire de cache plus utile, il est accompagné de
- <classname>Zend_Application_Resource_Cachemanager</classname> et
- <classname>Zend_Controller_Action_Helper_Cache</classname>. Toutes deux sont décrites
- dans leurs pages respectives de la documentation.
- </para>
- <para>
- Aussi, <classname>Zend_Cache_Manager</classname> inclut déjà trois modèles prédéfinis,
- "default", "page" et "pagetag". Le cache "default" utilise des fichiers
- comme stockage et un Core comme frontend. Les 2 autres caches sont utilisés avec des
- pages statiques dans lesquelles du
- <acronym>HTML</acronym>, <acronym>XML</acronym> ou encore <acronym>JSON</acronym>
- peut être stocké dans des fichiers statiques dans <filename>/public</filename>.
- Le contrôle sur les pages statiques est assuré par
- <classname>Zend_Controller_Action_Helper_Cache</classname>, même si vous pouvez changer
- les options "page", "pagetag" (par exemple) en utilisant
- <methodname>Zend_Cache_Manager::setTemplateOptions()</methodname> ou même
- <methodname>Zend_Cache_Manager::setCacheTemplate()</methodname>.
- </para>
- </sect1>
|