Zend_Memory-MemoryManager.xml 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15157 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.memory.memory-manager">
  5. <title>Memory Manager</title>
  6. <sect2 id="zend.memory.memory-manager.creation">
  7. <title>Erstellen eines Memory Manager</title>
  8. <para>
  9. Ein neuer Memory Manager (<classname>Zend_Memory_Manager</classname> object)
  10. kann erstellt werden durch Verwendung der
  11. <classname>Zend_Memory::factory($backendName [, $backendOprions])</classname>
  12. Methode.
  13. </para>
  14. <para>
  15. Das erste Argument <code>$backendName</code> ist eine Zeichenkette die
  16. eine der Backend Implementationen benennt welche durch <classname>Zend_Cache</classname>
  17. unterstützt werden.
  18. </para>
  19. <para>
  20. Das zweite Argument <code>$backendOptions</code> ist ein optionales
  21. Array für die Optionen des Backends.
  22. </para>
  23. <programlisting role="php"><![CDATA[
  24. $backendOptions = array(
  25. // Verzeichnis in dem die geswappten Memory Blöcke abgelegt werden
  26. 'cache_dir' => './tmp/'
  27. );
  28. $memoryManager = Zend_Memory::factory('File', $backendOptions);
  29. ]]></programlisting>
  30. <para>
  31. <classname>Zend_Memory</classname> verwendet <link linkend="zend.cache.backends"><classname>Zend_Cache Backends</classname></link>
  32. als Speicheranbieter.
  33. </para>
  34. <para>
  35. Der spezielle Name '<code>None</code>' kann als Backend Name verwendet werden,
  36. zusätzlich zu den Standard <classname>Zend_Cache</classname> Backends.
  37. <programlisting role="php"><![CDATA[
  38. $memoryManager = Zend_Memory::factory('None');
  39. ]]></programlisting>
  40. </para>
  41. <para>
  42. Wenn '<code>None</code>' als Backend Name verwendet wird, dann tauscht der
  43. Memory Manager niemals die Memory Blöcke. Das ist nützlich wenn man weiß das
  44. Speicher nicht limitiert ist oder die Gesamtgröße der Objekte nie das
  45. Speicherlimit erreicht.
  46. </para>
  47. <para>
  48. Das '<code>None</code>' Backend benötigt keine Definition von Optionen.
  49. </para>
  50. </sect2>
  51. <sect2 id="zend.memory.memory-manager.objects-management">
  52. <title>Memory Objekte verwalten</title>
  53. <para>
  54. Diese Sektion beschreibt die Erstellung und Vernichtung von Objekten im
  55. Memory Manager, und die Einstellungen um das Verhalten des Memory
  56. Managers zu kontrollieren.
  57. </para>
  58. <sect3 id="zend.memory.memory-manager.objects-management.movable">
  59. <title>Erstellung verschiebbarer Objekte</title>
  60. <para>
  61. Verschiebbare Objekte (Objekte, welche verschoben werden können)
  62. können erstellt werden mit Hilfe der
  63. <classname>Zend_Memory_Manager::create([$data])</classname> Methode:
  64. <programlisting role="php"><![CDATA[
  65. $memObject = $memoryManager->create($data);
  66. ]]></programlisting>
  67. </para>
  68. <para>
  69. Das <code>$data</code> Argument ist optional und wird verwendet um
  70. die Objekt Werte zu initialisieren. Wenn das <code>$data</code>
  71. unterdrückt wird, ist der Wert eine leere Zeichenkette.
  72. </para>
  73. </sect3>
  74. <sect3 id="zend.memory.memory-manager.objects-management.locked">
  75. <title>Erstellen verschlüsselter Objekte</title>
  76. <para>
  77. Verschlüsselte Objekte (Objekte, welche niemals getauscht werden) können
  78. erstellt werden mit Hilfe der
  79. <classname>Zend_Memory_Manager::createLocked([$data])</classname> Methode:
  80. <programlisting role="php"><![CDATA[
  81. $memObject = $memoryManager->createLocked($data);
  82. ]]></programlisting>
  83. </para>
  84. <para>
  85. Das <code>$data</code> Argument ist optional und wird verwendet um
  86. die Objekt Werte zu initialisieren. Wenn das <code>$data</code>
  87. Argument unterdrückt wird, ist der Wert eine leere Zeichenkette.
  88. </para>
  89. </sect3>
  90. <sect3 id="zend.memory.memory-manager.objects-management.destruction">
  91. <title>Objekte vernichten</title>
  92. <para>
  93. Memory Objekte werden automatische vernichtet und vom Speicher
  94. entfernt wenn sie ausserhalb des Bereichs sind:
  95. <programlisting role="php"><![CDATA[
  96. function foo()
  97. {
  98. global $memoryManager, $memList;
  99. ...
  100. $memObject1 = $memoryManager->create($data1);
  101. $memObject2 = $memoryManager->create($data2);
  102. $memObject3 = $memoryManager->create($data3);
  103. ...
  104. $memList[] = $memObject3;
  105. ...
  106. unset($memObject2); // $memObject2 wird hier zerstört
  107. ...
  108. // $memObject1 wird hier zerstört
  109. // Aber das $memObject3 Objekt ist noch immer referenziert
  110. // durch $memList und ist nicht zerstört
  111. }
  112. ]]></programlisting>
  113. </para>
  114. <para>
  115. Das gilt für beide, verschiebbare und verschlüsselte Objekte.
  116. </para>
  117. </sect3>
  118. </sect2>
  119. <sect2 id="zend.memory.memory-manager.settings">
  120. <title>Memory Manager Einstellungen</title>
  121. <sect3 id="zend.memory.memory-manager.settings.memory-limit">
  122. <title>Memory Limit</title>
  123. <para>
  124. Das Memory Limit ist eine Zahl von Bytes die zur Verwendung durch
  125. geladene verschiebbare Objekte erlaubt ist.
  126. </para>
  127. <para>
  128. Wenn das Laden oder Erstellen eines Objekts ein Überschreiten des
  129. Limits der Verwendung des Speichers verursachen würde, tauscht der
  130. Memory Manager einige andere Objekte.
  131. </para>
  132. <para>
  133. Das Memory Limit kann empfangen oder gesetzt werden durch Verwendung
  134. der <code>getMemoryLimit()</code> und <code>setMemoryLimit($newLimit)</code>
  135. Methoden:
  136. <programlisting role="php"><![CDATA[
  137. $oldLimit = $memoryManager->getMemoryLimit(); // Memorylimit in Bytes empfangen
  138. $memoryManager->setMemoryLimit($newLimit); // Memorylimit in Bytes setzen
  139. ]]></programlisting>
  140. </para>
  141. <para>
  142. Ein negativer Wert für das Memory Limit bedeutet 'kein Limit'.
  143. </para>
  144. <para>
  145. Der Standardwert ist zweidrittel des Wertes von '<code>memory_limit</code>'
  146. in php.ini oder 'kein Limit' (-1) wenn '<code>memory_limit</code>' in der
  147. php.ini nihct gesetzt ist.
  148. </para>
  149. </sect3>
  150. <sect3 id="zend.memory.memory-manager.settings.min-size">
  151. <title>MinSize</title>
  152. <para>
  153. MinSize ist die minimalste Größe von Memory Objekten, welche vom
  154. Memory Manager getauscht werden können. Der Memory Manager tauscht
  155. keine Objekte welche kleiner als dieser Wert sind. Das vermindert die
  156. Anzahl von Tausch-/Lade- Operationen.
  157. </para>
  158. <para>
  159. Man kann die minimale Größe empfangen oder setzen durch Verwendung der
  160. <code>getMinSize()</code> und <code>setMinSize($newSize)</code>
  161. Methoden:
  162. <programlisting role="php"><![CDATA[
  163. $oldMinSize = $memoryManager->getMinSize(); // MinSize in Bytes empfangen
  164. $memoryManager->setMinSize($newSize); // MinSize Limit in Bytes setzen
  165. ]]></programlisting>
  166. </para>
  167. <para>
  168. Die standardmäßige Wert für die minimale Größe ist 16KB (16384 bytes).
  169. </para>
  170. </sect3>
  171. </sect2>
  172. </sect1>