File: Zend_Memory-MemoryManager.xml

package info (click to toggle)
zendframework 1.12.9%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 133,584 kB
  • sloc: xml: 1,311,829; php: 570,173; sh: 170; makefile: 125; sql: 121
file content (218 lines) | stat: -rw-r--r-- 7,892 bytes parent folder | download | duplicates (2)
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>