Zend_Memory-MemoryManager.xml 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.memory.memory-manager">
  5. <title>Manager de mémoire</title>
  6. <sect2 id="zend.memory.memory-manager.creation">
  7. <title>Créer un manager de mémoire</title>
  8. <para>
  9. Vous pouvez créer un nouveau manager de mémoire (objet
  10. <classname>Zend_Memory_Manager</classname>) en utilisant la méthode
  11. <methodname>Zend_Memory::factory($backendName [, $backendOprions])</methodname>.
  12. </para>
  13. <para>
  14. Le premier argument <varname>$backendName</varname> est le nom d'un type de backend
  15. supporté par <classname>Zend_Cache</classname>
  16. </para>
  17. <para>
  18. Le second argument <varname>$backendOptions</varname> est un tableau optionnel indiquant
  19. les options du backend.
  20. </para>
  21. <programlisting language="php"><![CDATA[
  22. $backendOptions = array(
  23. 'cache_dir' => './tmp/'
  24. // Dossier où les blocks de mémoire peuvent être stockés
  25. );
  26. $memoryManager = Zend_Memory::factory('File', $backendOptions);
  27. ]]></programlisting>
  28. <para>
  29. Zend_Memory utilise les <link linkend="zend.cache.backends">backends
  30. Zend_Cache</link> comme fournisseurs de stockage.
  31. </para>
  32. <para>
  33. Vous pouvez de plus utiliser le nom spécial "None" en tant que nom de
  34. backend supplémentaire de <classname>Zend_Cache</classname>. <programlisting language="php"><![CDATA[
  35. $memoryManager = Zend_Memory::factory('None');
  36. ]]></programlisting></para>
  37. <para>
  38. Si vous utilisez "None", alors le manager de mémoire ne mettra pas en
  39. cache les blocks de mémoire. Ceci est intéressant si vous savez que la mémoire n'est pas
  40. limitée ou la taille complète des objets n'atteint jamais la limite de mémoire.
  41. </para>
  42. <para>Le backend "None" ne nécessite aucune option.</para>
  43. </sect2>
  44. <sect2 id="zend.memory.memory-manager.objects-management">
  45. <title>Manager les objets mémoire</title>
  46. <para>
  47. Cette section décrit la création et la destruction d'objet de mémoire, et les
  48. réglages du manager de mémoire.
  49. </para>
  50. <sect3 id="zend.memory.memory-manager.objects-management.movable">
  51. <title>Créer des objets mobiles</title>
  52. <para>
  53. Créer des objets mobiles (objets qui peuvent être mis en cache) en utilisant
  54. la méthode <methodname>Zend_Memory_Manager::create([$data])</methodname> :
  55. <programlisting language="php"><![CDATA[
  56. $memObject = $memoryManager->create($data);
  57. ]]></programlisting></para>
  58. <para>
  59. L'argument <varname>$data</varname> est optionnel et utilisé pour initialiser la
  60. valeur de l'objet. Si l'argument <varname>$data</varname> est omis, la valeur est une
  61. chaîne vide.
  62. </para>
  63. </sect3>
  64. <sect3 id="zend.memory.memory-manager.objects-management.locked">
  65. <title>Créer des objets verrouillés</title>
  66. <para>
  67. Créer des objets verrouillés (objets qui ne doivent pas être mis en cache) en
  68. utilisant la méthode
  69. <methodname>Zend_Memory_Manager::createLocked([$data])</methodname> : <programlisting
  70. role="php"><![CDATA[
  71. $memObject = $memoryManager->createLocked($data);
  72. ]]></programlisting></para>
  73. <para>
  74. L'argument <varname>$data</varname> est optionnel et utilisé pour initialiser la
  75. valeur de l'objet. Si l'argument <varname>$data</varname> est omis, la valeur est une
  76. chaîne vide.
  77. </para>
  78. </sect3>
  79. <sect3 id="zend.memory.memory-manager.objects-management.destruction">
  80. <title>Détruire des objets</title>
  81. <para>
  82. Les objets mémoire sont automatiquement détruits et effacés de la mémoire
  83. quand ils sont hors de portée : <programlisting language="php"><![CDATA[
  84. function foo()
  85. {
  86. global $memoryManager, $memList;
  87. ...
  88. $memObject1 = $memoryManager->create($data1);
  89. $memObject2 = $memoryManager->create($data2);
  90. $memObject3 = $memoryManager->create($data3);
  91. ...
  92. $memList[] = $memObject3;
  93. ...
  94. unset($memObject2); // $memObject2 est détruit ici
  95. ...
  96. // $memObject1 est détruit ici
  97. // mais $memObject3 est toujours référencé par $memList
  98. // et n'est pas détruit
  99. }
  100. ]]></programlisting></para>
  101. <para>Ceci s'applique aux objets mobiles et verrouillés.</para>
  102. </sect3>
  103. </sect2>
  104. <sect2 id="zend.memory.memory-manager.settings">
  105. <title>Régler le manager de mémoire</title>
  106. <sect3 id="zend.memory.memory-manager.settings.memory-limit">
  107. <title>Mémoire limite</title>
  108. <para>
  109. La mémoire limite est le nombre d'octets autorisés à être utilisés par des
  110. objets mobiles chargés.
  111. </para>
  112. <para>
  113. Si le chargement ou la création d'un objet entraîne l'utilisation de mémoire
  114. excédant cette limite, alors le manager met en cache un certain nombre
  115. d'objet.
  116. </para>
  117. <para>
  118. Vous pouvez récupérer et régler la mémoire limite en utilisant les méthodes
  119. <methodname>getMemoryLimit()</methodname> et <methodname>setMemoryLimit($newLimit)</methodname> :
  120. <programlisting language="php"><![CDATA[
  121. $oldLimit = $memoryManager->getMemoryLimit();
  122. // Récupére la mémoire limite en octets
  123. $memoryManager->setMemoryLimit($newLimit);
  124. // Règle la mémoire limite en octets
  125. ]]></programlisting></para>
  126. <para>Une valeur négative pour limite de mémoire équivaut à "pas de limite".</para>
  127. <para>
  128. La valeur par défaut est deux-tiers de la valeur de
  129. "memory_limit" dans le php.ini ou "no limit" (-1) si
  130. "memory_limit" n'est pas réglé dans le php.ini.
  131. </para>
  132. </sect3>
  133. <sect3 id="zend.memory.memory-manager.settings.min-size">
  134. <title>MinSize (taille minimum)</title>
  135. <para>
  136. <code>MinSize</code> est la taille minimale des objets de mémoire, qui peuvent
  137. être mis en cache par le manager de mémoire. Le manager ne met pas en cache des
  138. objets plus petits que cette valeur. Ceci réduit le nombre d'opérations de mise de
  139. cache/chargement
  140. </para>
  141. <para>
  142. Vous pouvez récupérer et régler la taille minimale en utilisant les méthodes
  143. <methodname>getMinSize()</methodname> et <methodname>setMinSize($newSize)</methodname> : <programlisting
  144. role="php"><![CDATA[
  145. $oldMinSize = $memoryManager->getMinSize();
  146. // Récupère la taille minimale en octets
  147. $memoryManager->setMinSize($newSize);
  148. // Règle la taille minimale en octets
  149. ]]></programlisting></para>
  150. <para>La taille minimum par défaut est 16KB (16384 octets).</para>
  151. </sect3>
  152. </sect2>
  153. </sect1>