[ZF-10089] Zend_Log
[zend.git] / documentation / manual / fr / module_specs / Zend_Memory-Overview.xml
blobe5fe12e7110d888bffc391e18fb6f09b4ef89420
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 21829 -->
3 <!-- Reviewed: no -->
4 <sect1 id="zend.memory.overview">
5     <title>Présentation</title>
7     <sect2 id="zend.memory.introduction">
8         <title>Introduction</title>
10         <para>
11             Le composant <classname>Zend_Memory</classname> est destiné à gérer des données
12             dans un environnement où la mémoire est limitée.
13         </para>
15         <para>
16             Les objets mémoire (conteneurs de mémoire) sont produits par le manager de mémoire
17             sur demande et mis en cache/chargés d'une manière transparente quand c'est
18             nécessaire.
19         </para>
21         <para>
22             Par exemple, si la création ou le chargement d'un objet entraîne une utilisation
23             de mémoire totale excédant la limite que vous spécifiez, certains objets gérés sont
24             copiés en cache à l'extérieur de la mémoire. De cette façon, la mémoire totale utilisée
25             par les objets gérés n'excède pas la limite que vous devez mettre en application.
26         </para>
28         <para>
29             Le manager de mémoire utilise les <link linkend="zend.cache.backends">backends
30             Zend_Cache</link> comme fournisseurs de stockage.
31         </para>
33         <example id="zend.memory.introduction.example-1">
34             <title>Utiliser le composant Zend_Memory</title>
36             <para>
37                 <methodname>Zend_Memory::factory()</methodname> instancie l'objet de management
38                 de la mémoire avec les options spécifiques du backend.
39             </para>
41             <programlisting language="php"><![CDATA[
42 $backendOptions = array(
43     'cache_dir' => './tmp/'
44     // Dossier où les blocks de mémoire peuvent être stockés
47 $memoryManager = Zend_Memory::factory('File', $backendOptions);
49 $loadedFiles = array();
51 for ($count = 0; $count < 10000; $count++) {
52     $f = fopen($fileNames[$count], 'rb');
53     $data = fread($f, filesize($fileNames[$count]));
54     $fclose($f);
56     $loadedFiles[] = $memoryManager->create($data);
59 echo $loadedFiles[$index1]->value;
61 $loadedFiles[$index2]->value = $newValue;
63 $loadedFiles[$index3]->value[$charIndex] = '_';
64 ]]></programlisting>
65         </example>
66     </sect2>
68     <sect2 id="zend.memory.theory-of-operation">
69         <title>Aspect théorique</title>
71         <para>
72             <classname>Zend_Memory</classname> travaille avec les concepts suivants :
73             <itemizedlist>
74                     <listitem>
75                         <para>Manager de mémoire</para>
76                     </listitem>
78                     <listitem>
79                         <para>Conteneur de mémoire</para>
80                     </listitem>
82                     <listitem>
83                         <para>Objet de mémoire verrouillé</para>
84                     </listitem>
86                     <listitem>
87                         <para>Objet de mémoire mobile</para>
88                     </listitem>
89                 </itemizedlist>
90             </para>
92         <sect3 id="zend.memory.theory-of-operation.manager">
93             <title>Manager de mémoire</title>
95             <para>
96                 Le manager de mémoire produit des objets de mémoire (verrouillé ou mobile) sur
97                 demande de l'utilisateur et les retourne encapsulé dans un objet conteneur de
98                 mémoire.
99             </para>
100         </sect3>
102         <sect3 id="zend.memory.theory-of-operation.container">
103             <title>Conteneur de mémoire</title>
105             <para>
106                 Le conteneur de mémoire a un attribut <code>value</code> virtuel ou réel de
107                 type chaîne de caractères. Cet attribut contient la valeur de donnée indiquée au
108                 moment de la création de l'objet mémoire.
109             </para>
111             <para>
112                 Vous pouvez exploiter cet attribut <code>value</code> comme une propriété
113                 d'objet : <programlisting language="php"><![CDATA[
114 $memObject = $memoryManager->create($data);
116 echo $memObject->value;
118 $memObject->value = $newValue;
120 $memObject->value[$index] = '_';
122 echo ord($memObject->value[$index1]);
124 $memObject->value = substr($memObject->value, $start, $length);
125 ]]></programlisting></para>
127                 <note>
128                 <para>
129                     Si vous utilisez une version de <acronym>PHP</acronym> inférieure à 5.2, utilisez la méthode
130                     <link linkend="zend.memory.memory-objects.api.getRef">getRef()</link> au lieu
131                     d'accéder directement à la valeur de la propriété.
132                 </para>
133             </note>
134         </sect3>
136         <sect3 id="zend.memory.theory-of-operation.locked">
137             <title>Objet de mémoire verrouillé</title>
139             <para>
140                 Les objets de mémoire verrouillés sont toujours stockés dans la mémoire. Les
141                 données stockées dans la mémoire verrouillée ne sont jamais mis en cache.
142             </para>
143         </sect3>
145         <sect3 id="zend.memory.theory-of-operation.movable">
146             <title>Objet de mémoire mobile</title>
148             <para>
149                 Les objets de mémoire mobiles sont mis en cache et chargés de manière
150                 transparente de/vers le cache par <classname>Zend_Memory</classname> si c'est
151                 nécessaire.
152             </para>
154             <para>
155                 Le manager de mémoire ne met pas en cache des objets ayant une taille plus
156                 petite que le minimum spécifié dans un soucis de performances. Voir <xref
157                 linkend="zend.memory.memory-manager.settings.min-size" /> pour plus de
158                 détails.
159             </para>
160         </sect3>
161     </sect2>
162 </sect1>