File: Zend_Memory-Overview.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 (162 lines) | stat: -rw-r--r-- 5,826 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
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.memory.overview">
    <title>Présentation</title>

    <sect2 id="zend.memory.introduction">
        <title>Introduction</title>

        <para>
            Le composant <classname>Zend_Memory</classname> est destiné à gérer des données
            dans un environnement où la mémoire est limitée.
        </para>

        <para>
            Les objets mémoire (conteneurs de mémoire) sont produits par le manager de mémoire
            sur demande et mis en cache/chargés d'une manière transparente quand c'est
            nécessaire.
        </para>

        <para>
            Par exemple, si la création ou le chargement d'un objet entraîne une utilisation
            de mémoire totale excédant la limite que vous spécifiez, certains objets gérés sont
            copiés en cache à l'extérieur de la mémoire. De cette façon, la mémoire totale utilisée
            par les objets gérés n'excède pas la limite que vous devez mettre en application.
        </para>

        <para>
            Le manager de mémoire utilise les <link linkend="zend.cache.backends">backends
            Zend_Cache</link> comme fournisseurs de stockage.
        </para>

        <example id="zend.memory.introduction.example-1">
            <title>Utiliser le composant Zend_Memory</title>

            <para>
                <methodname>Zend_Memory::factory()</methodname> instancie l'objet de management
                de la mémoire avec les options spécifiques du backend.
            </para>

            <programlisting language="php"><![CDATA[
$backendOptions = array(
    'cache_dir' => './tmp/'
    // Dossier où les blocks de mémoire peuvent être stockés
);

$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>Aspect théorique</title>

        <para>
            <classname>Zend_Memory</classname> travaille avec les concepts suivants :
            <itemizedlist>
                    <listitem>
                        <para>Manager de mémoire</para>
                    </listitem>

                    <listitem>
                        <para>Conteneur de mémoire</para>
                    </listitem>

                    <listitem>
                        <para>Objet de mémoire verrouillé</para>
                    </listitem>

                    <listitem>
                        <para>Objet de mémoire mobile</para>
                    </listitem>
                </itemizedlist>
            </para>

        <sect3 id="zend.memory.theory-of-operation.manager">
            <title>Manager de mémoire</title>

            <para>
                Le manager de mémoire produit des objets de mémoire (verrouillé ou mobile) sur
                demande de l'utilisateur et les retourne encapsulé dans un objet conteneur de
                mémoire.
            </para>
        </sect3>

        <sect3 id="zend.memory.theory-of-operation.container">
            <title>Conteneur de mémoire</title>

            <para>
                Le conteneur de mémoire a un attribut <property>value</property> virtuel ou réel de
                type chaîne de caractères. Cet attribut contient la valeur de donnée indiquée au
                moment de la création de l'objet mémoire.
            </para>

            <para>
                Vous pouvez exploiter cet attribut <property>value</property> comme une propriété
                d'objet : <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></para>

                <note>
                <para>
                    Si vous utilisez une version de <acronym>PHP</acronym> inférieure à 5.2, utilisez la méthode
                    <link linkend="zend.memory.memory-objects.api.getRef">getRef()</link> au lieu
                    d'accéder directement à la valeur de la propriété.
                </para>
            </note>
        </sect3>

        <sect3 id="zend.memory.theory-of-operation.locked">
            <title>Objet de mémoire verrouillé</title>

            <para>
                Les objets de mémoire verrouillés sont toujours stockés dans la mémoire. Les
                données stockées dans la mémoire verrouillée ne sont jamais mis en cache.
            </para>
        </sect3>

        <sect3 id="zend.memory.theory-of-operation.movable">
            <title>Objet de mémoire mobile</title>

            <para>
                Les objets de mémoire mobiles sont mis en cache et chargés de manière
                transparente de/vers le cache par <classname>Zend_Memory</classname> si c'est
                nécessaire.
            </para>

            <para>
                Le manager de mémoire ne met pas en cache des objets ayant une taille plus
                petite que le minimum spécifié dans un soucis de performances. Voir
                <link linkend="zend.memory.memory-manager.settings.min-size">cette section</link>
                pour plus de détails.
            </para>
        </sect3>
    </sect2>
</sect1>