| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.memory.overview">
- <title>Übersicht</title>
- <sect2 id="zend.memory.introduction">
- <title>Einführung</title>
- <para>
- Die <classname>Zend_Memory</classname> Komponente ist dafür gedacht Daten in
- Systemen mit limitiertem Speicher zu Verwalten.
- </para>
- <para>
- Memory Objekte (Memory Container) werden durch den Memory Manager
- bei Anfrage erzeugt und transparent geswappt/geladen wenn dies
- notwendig wird.
- </para>
- <para>
- 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.
- </para>
- <para>
- Der Memory Manager verwendet
- <link linkend="zend.cache.backends">Zend_Cache backends</link>
- als Speicheranbieter.
- </para>
- <example id="zend.memory.introduction.example-1">
- <title>Verwenden der Zend_Memory Komponente</title>
- <para>
- <methodname>Zend_Memory::factory()</methodname> instantiiert das Speichermanager
- Objekt mit den definierten Backend Optionen.
- </para>
- <programlisting language="php"><![CDATA[
- // Verzeichnis in welches die getauschten Speicherblöcke geschrieben werden
- $backendOptions = array(
- 'cache_dir' => './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] = '_';
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.memory.theory-of-operation">
- <title>Theorie der Verwendung</title>
- <para>
- Die <classname>Zend_Memory</classname> Komponente arbeitet mit den folgenden Konzepten:
- <itemizedlist>
- <listitem><para>Memory Manager</para></listitem>
- <listitem><para>Memory Container</para></listitem>
- <listitem><para>Verschlüsseltes Memory Objekt</para></listitem>
- <listitem><para>Verschiebbares Memory Objekt</para></listitem>
- </itemizedlist>
- </para>
- <sect3 id="zend.memory.theory-of-operation.manager">
- <title>Memory Manager</title>
- <para>
- 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.
- </para>
- </sect3>
- <sect3 id="zend.memory.theory-of-operation.container">
- <title>Memory Container</title>
- <para>
- Der Memory Container hat ein virtuelles oder aktuelles Attribut
- <property>value</property> vom Typ String. Dieses
- Attribut enthält Datenwerte die bei der Erstellung des
- Memory Objektes definiert werden.
- </para>
- <para>
- Es kann mit <property>value</property> Attributen wie auch mit
- Objekt Eigenschaften gearbeitet werden.
- </para>
- <programlisting language="php"><![CDATA[
- $memObject = $memoryManager->create($data);
- echo $memObject->value;
- $memObject->value = $newValue;
- $memObject->value[$index] = '_';
- echo ord($memObject->value[$index1]);
- $memObject->value = substr($memObject->value, $start, $length);
- ]]></programlisting>
- <note>
- <para>
- Wenn eine <acronym>PHP</acronym> Version vor 5.2 verwendet wird, sollte
- stattdessen die <link
- linkend="zend.memory.memory-objects.api.getRef">getRef()</link> Methode
- verwendet werden statt direkt auf die Wert Eigenschaften zuzugreifen.
- </para>
- </note>
- </sect3>
- <sect3 id="zend.memory.theory-of-operation.locked">
- <title>Verschlüsselter Memory</title>
- <para>
- Verschlüsselte Speicher Objekte werden immer im Speicher gespeichert.
- Daten welche im verschlüsselten Speicher gespeichert sind, werden
- niemals in das Cache Backend getauscht.
- </para>
- </sect3>
- <sect3 id="zend.memory.theory-of-operation.movable">
- <title>Verschiebbarer Memory</title>
- <para>
- Verschiebbare Memory Objekte werden transparent geswappt und geladen von und in das
- Cache Backend durch <classname>Zend_Memory</classname> wenn das notwendig wird.
- </para>
- <para>
- Der Memory Manager swappt keine Objekte die eine kleinere Größe
- als das definierte Minimum besitzen, und zwar aus Gründen der
- Geschwindigkeit. Siehe
- <link linkend="zend.memory.memory-manager.settings.min-size">diesen Abschnitt</link>
- für mehr Details.
- </para>
- </sect3>
- </sect2>
- </sect1>
|