Zend_Cache-Cache_Manager.xml 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.cache.cache.manager">
  5. <title>Le gestionnaire de Cache</title>
  6. <para>
  7. Une application comporte par nature plusieurs caches de types différents fonctions du
  8. contrôleur ou du modèle accédé. Afin de faciliter la création et la manipulation des
  9. options de <classname>Zend_Cache</classname> au plus tôt (par exemple en bootstrap),
  10. <classname>Zend_Cache_Manager</classname> a été créée. Cette
  11. classe est accompagnée de <classname>Zend_Application_Resource_Cachemanager</classname>
  12. pour tout ce qui concerne le bootstrap et
  13. <classname>Zend_Controller_Action_Helper_Cache</classname> afin d'accéder aux caches
  14. depuis les contrôleurs et autres aides d'action.
  15. </para>
  16. <para>
  17. Le gestionnaire de cache utilise des templates, ce sont en fait des ensembles de
  18. configurations valides pour un cache. Ces templates s'enregistrent grâce à
  19. <methodname>Zend_Cache_Manager::setCacheTemplate()</methodname> et ne donnent naissance
  20. à un objet de cache que lorsque <methodname>Zend_Cache_Manager::getCache()</methodname>
  21. sera appelée.
  22. </para>
  23. <programlisting language="php"><![CDATA[
  24. $manager = new Zend_Cache_Manager;
  25. $dbCache = array(
  26. 'frontend' => array(
  27. 'name' => 'Core',
  28. 'options' => array(
  29. 'lifetime' => 7200,
  30. 'automatic_serialization' => true
  31. )
  32. ),
  33. 'backend' => array(
  34. 'name' => 'Core',
  35. 'options' => array(
  36. 'cache_dir' => '/path/to/cache'
  37. )
  38. )
  39. );
  40. $manager->setCacheTemplate('database', $dbCache);
  41. /**
  42. * Partout ailleurs où le gestionnaire de cache est accessible...
  43. */
  44. $databaseCache = $manager->getCache('database');
  45. ]]></programlisting>
  46. <para>
  47. Le gestionnaire autorise aussi l'enregistrement d'objets de cache préalablement
  48. créés, ceci grâce à la méthode <methodname>Zend_Cache_Manager::setCache()</methodname>.
  49. </para>
  50. <programlisting language="php"><![CDATA[
  51. $frontendOptions = array(
  52. 'lifetime' => 7200,
  53. 'automatic_serialization' => true
  54. );
  55. $backendOptions = array(
  56. 'cache_dir' => '/path/to/cache'
  57. );
  58. $dbCache = Zend_Cache::factory('Core',
  59. 'File',
  60. $frontendOptions,
  61. $backendOptions);
  62. $manager = new Zend_Cache_Manager;
  63. $manager->setCache('database', $dbCache);
  64. /**
  65. * Partout ailleurs où le gestionnaire de cache est accessible...
  66. */
  67. $databaseCache = $manager->getCache('database');
  68. ]]></programlisting>
  69. <para>
  70. Si vous n'êtes pas sûr si le gestionnaire possède en lui un template de configuration
  71. ou un objet de cache déja enregistré, vérifiez celà grâce à
  72. <methodname>Zend_Cache_Manager::hasCache()</methodname>.
  73. </para>
  74. <programlisting language="php"><![CDATA[
  75. $manager = new Zend_Cache_Manager;
  76. $dbCache = array(
  77. 'frontend' => array(
  78. 'name' => 'Core',
  79. 'options' => array(
  80. 'lifetime' => 7200,
  81. 'automatic_serialization' => true
  82. )
  83. ),
  84. 'backend' => array(
  85. 'name' => 'Core',
  86. 'options' => array(
  87. 'cache_dir' => '/path/to/cache'
  88. )
  89. )
  90. );
  91. $manager->setCacheTemplate('database', $dbCache);
  92. /**
  93. * Partout ailleurs où le gestionnaire de cache est accessible...
  94. */
  95. if ($manager->hasCache('database')) {
  96. $databaseCache = $manager->getCache('database');
  97. } else {
  98. // Créer un cache à la main puisque non trouvé dans le gestionnaire
  99. }
  100. ]]></programlisting>
  101. <para>
  102. Dans certains cas, vous pouvez avoir défini un certain de cas d'utilisation avec
  103. <classname>Zend_Cache_Manager</classname>, mais vous avez besoin de préciser un option
  104. dans un cas particulier. Il est alors possible de modifier la configuration d'un template
  105. de cache après l'avoir saisie, ceci au moyen de
  106. <methodname>Zend_Cache_Manager::setTemplateOptions()</methodname>.
  107. </para>
  108. <programlisting language="php"><![CDATA[
  109. $manager = new Zend_Cache_Manager;
  110. $dbCache = array(
  111. 'frontend' => array(
  112. 'name' => 'Core',
  113. 'options' => array(
  114. 'lifetime' => 7200,
  115. 'automatic_serialization' => true
  116. )
  117. ),
  118. 'backend' => array(
  119. 'name' => 'Core',
  120. 'options' => array(
  121. 'cache_dir' => '/path/to/cache'
  122. )
  123. )
  124. );
  125. $manager->setCacheTemplate('database', $dbCache);
  126. /**
  127. * Partout ailleurs où le gestionnaire de cache est accessible...
  128. * Ici nous changeons le support de stockage vers Memcache plutôt que ce
  129. * qu'il était avant : File.
  130. */
  131. $fineTuning = array(
  132. 'backend' => array(
  133. 'name' => 'Memcached',
  134. 'options' => array(
  135. 'servers' => array(
  136. array(
  137. 'host' => 'localhost',
  138. 'port' => 11211,
  139. 'persistent' => true,
  140. 'weight' => 1,
  141. 'timeout' => 5,
  142. 'retry_interval' => 15,
  143. 'status' => true,
  144. 'failure_callback' => ''
  145. )
  146. )
  147. )
  148. )
  149. );
  150. $manager->setTemplateOptions('database', $fineTuning);
  151. $databaseCache = $manager->getCache('database');
  152. ]]></programlisting>
  153. <para>
  154. Pour rendre le gestionnaire de cache plus utile, il est accompagné de
  155. <classname>Zend_Application_Resource_Cachemanager</classname> et
  156. <classname>Zend_Controller_Action_Helper_Cache</classname>. Toutes deux sont décrites
  157. dans leurs pages respectives de la documentation.
  158. </para>
  159. <para>
  160. Aussi, <classname>Zend_Cache_Manager</classname> inclut déjà trois modèles prédéfinis,
  161. "default", "page" et "pagetag". Le cache "default" utilise des fichiers
  162. comme stockage et un Core comme frontend. Les 2 autres caches sont utilisés avec des
  163. pages statiques dans lesquelles du
  164. <acronym>HTML</acronym>, <acronym>XML</acronym> ou encore <acronym>JSON</acronym>
  165. peut être stocké dans des fichiers statiques dans <filename>/public</filename>.
  166. Le contrôle sur les pages statiques est assuré par
  167. <classname>Zend_Controller_Action_Helper_Cache</classname>, même si vous pouvez changer
  168. les options "page", "pagetag" (par exemple) en utilisant
  169. <methodname>Zend_Cache_Manager::setTemplateOptions()</methodname> ou même
  170. <methodname>Zend_Cache_Manager::setCacheTemplate()</methodname>.
  171. </para>
  172. </sect1>