| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- <?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>
|