Memory ManagerErstellen eines Memory Manager
Ein neuer Memory Manager (Zend_Memory_Manager object)
kann erstellt werden durch Verwendung der
Zend_Memory::factory($backendName [, $backendOprions])
Methode.
Das erste Argument $backendName ist eine Zeichenkette die
eine der Backend Implementationen benennt welche durch Zend_Cache
unterstützt werden.
Das zweite Argument $backendOptions ist ein optionales
Array für die Optionen des Backends.
'./tmp/'
);
$memoryManager = Zend_Memory::factory('File', $backendOptions);
]]>Zend_Memory verwendet Zend_Cache Backends
als Speicheranbieter.
Der spezielle Name 'None' kann als Backend Name verwendet werden,
zusätzlich zu den Standard Zend_Cache Backends.
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.
Das 'None' Backend benötigt keine Definition von Optionen.
Memory Objekte verwalten
Diese Sektion beschreibt die Erstellung und Vernichtung von Objekten im
Memory Manager, und die Einstellungen um das Verhalten des Memory
Managers zu kontrollieren.
Erstellung verschiebbarer Objekte
Verschiebbare Objekte (Objekte, welche verschoben werden können)
können erstellt werden mit Hilfe der
Zend_Memory_Manager::create([$data]) Methode:
create($data);
]]>
Das $data Argument ist optional und wird verwendet um
die Objekt Werte zu initialisieren. Wenn das $data
unterdrückt wird, ist der Wert eine leere Zeichenkette.
Erstellen verschlüsselter Objekte
Verschlüsselte Objekte (Objekte, welche niemals getauscht werden) können
erstellt werden mit Hilfe der
Zend_Memory_Manager::createLocked([$data]) Methode:
createLocked($data);
]]>
Das $data Argument ist optional und wird verwendet um
die Objekt Werte zu initialisieren. Wenn das $data
Argument unterdrückt wird, ist der Wert eine leere Zeichenkette.
Objekte vernichten
Memory Objekte werden automatische vernichtet und vom Speicher
entfernt wenn sie ausserhalb des Bereichs sind:
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
}
]]>
Das gilt für beide, verschiebbare und verschlüsselte Objekte.
Memory Manager EinstellungenMemory Limit
Das Memory Limit ist eine Zahl von Bytes die zur Verwendung durch
geladene verschiebbare Objekte erlaubt ist.
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.
Das Memory Limit kann empfangen oder gesetzt werden durch Verwendung
der getMemoryLimit() und
setMemoryLimit($newLimit) Methoden:
getMemoryLimit(); // Memorylimit in Bytes empfangen
$memoryManager->setMemoryLimit($newLimit); // Memorylimit in Bytes setzen
]]>
Ein negativer Wert für das Memory Limit bedeutet 'kein Limit'.
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.
MinSize
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.
Man kann die minimale Größe empfangen oder setzen durch Verwendung der
getMinSize() und
setMinSize($newSize) Methoden:
getMinSize(); // MinSize in Bytes empfangen
$memoryManager->setMinSize($newSize); // MinSize Limit in Bytes setzen
]]>
Die standardmäßige Wert für die minimale Größe ist 16KB (16384 bytes).