|
|
@@ -0,0 +1,192 @@
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
|
+<!-- EN-Revision: 20374 -->
|
|
|
+<!-- 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 model accédé. Afin de faciliter la création et la manipulation des caches
|
|
|
+ par exemple en bootstrap, <classname>Zend_Cache_Manager</classname> a été créee. 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ées, 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>
|
|
|
+ Il est 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éja quatre templates prédéfinis
|
|
|
+ "skeleton", "default", "page" et "tagcache". Le cache "default" utilise des fichiers comme stockage
|
|
|
+ et un Core comme frontend, il s'attend à posséder un dossier cache_dir appelé "cache" au même niveau
|
|
|
+ que le dossier normalisé "public" dans une application Zend Framework.
|
|
|
+ Le cache "skeleton" est un cache <constant>NULL</constant>, il ne comporte pas d'options.
|
|
|
+ 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", "tagcache" (par exemple) en utilisant
|
|
|
+ <methodname>Zend_Cache_Manager::setTemplateOptions()</methodname> ou même
|
|
|
+ <methodname>Zend_Cache_Manager::setCacheTemplate()</methodname>.
|
|
|
+ </para>
|
|
|
+</sect1>
|