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