Zend_Memory-MemoryManager.xml 6.5 KB

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