ÜbersichtEinführung
Die Zend_Memory Komponente ist dafür gedacht Daten in
Systemen mit limitiertem Speicher zu Verwalten.
Memory Objekte (Memory Container) werden durch den Memory Manager
bei Anfrage erzeugt und transparent geswappt/geladen wenn dies
notwendig wird.
Wenn, zum Beispiel, ein gemanagtes Objekt erzeugt oder geladen wird,
das den gesamten Speicherverbrauch überschreiten würde, der vorher
definiert wurde, werden einige gemanagte Objekte in den Cache Speicher
ausserhalb des Speichers kopiert. Auf diesen Weg wird der Gesamtspeicher
der von den gemanagten Objekten verwendet wird nicht das benötigte
Limit überschreiten.
Der Memory Manager verwendet
Zend_Cache backends
als Speicheranbieter.
Verwenden der Zend_Memory KomponenteZend_Memory::factory() instantiiert das Speichermanager
Objekt mit den definierten Backend Optionen.
'./tmp/'
);
$memoryManager = Zend_Memory::factory('File', $backendOptions);
$loadedFiles = array();
for ($count = 0; $count < 10000; $count++) {
$f = fopen($fileNames[$count], 'rb');
$data = fread($f, filesize($fileNames[$count]));
$fclose($f);
$loadedFiles[] = $memoryManager->create($data);
}
echo $loadedFiles[$index1]->value;
$loadedFiles[$index2]->value = $newValue;
$loadedFiles[$index3]->value[$charIndex] = '_';
]]>Theorie der Verwendung
Die Zend_Memory Komponente arbeitet mit den folgenden Konzepten:
Memory ManagerMemory ContainerVerschlüsseltes Memory ObjektVerschiebbares Memory ObjektMemory Manager
Der Memory Manager erzeugt Memory Objekte (gesperrt oder verschiebbar)
durch Anfrage der Anwendung des Benutzers und gibt diese
in einem Memory Container Objekt zurück.
Memory Container
Der Memory Container hat ein virtuelles oder aktuelles Attribut
value vom Typ String. Dieses
Attribut enthält Datenwerte die bei der Erstellung des
Memory Objektes definiert werden.
Es kann mit value Attributen wie auch mit
Objekt Eigenschaften gearbeitet werden.
create($data);
echo $memObject->value;
$memObject->value = $newValue;
$memObject->value[$index] = '_';
echo ord($memObject->value[$index1]);
$memObject->value = substr($memObject->value, $start, $length);
]]>
Wenn eine PHP Version vor 5.2 verwendet wird, sollte
stattdessen die getRef() Methode
verwendet werden statt direkt auf die Wert Eigenschaften zuzugreifen.
Verschlüsselter Memory
Verschlüsselte Speicher Objekte werden immer im Speicher gespeichert.
Daten welche im verschlüsselten Speicher gespeichert sind, werden
niemals in das Cache Backend getauscht.
Verschiebbarer Memory
Verschiebbare Memory Objekte werden transparent geswappt und geladen von und in das
Cache Backend durch Zend_Memory wenn das notwendig wird.
Der Memory Manager swappt keine Objekte die eine kleinere Größe
als das definierte Minimum besitzen, und zwar aus Gründen der
Geschwindigkeit. Siehe
diesen Abschnitt
für mehr Details.