Zend_Cache-Cache_Manager.xml 6.5 KB

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