| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <!-- EN-Revision: 13838 -->
- <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><classname>Zend_Memory::factory()</classname> instancie l'objet de management de la mémoire avec les options
- spécifiques du backend.</para>
- <programlisting role="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 <code>value</code> 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 <code>value</code> comme une propriété d'objet : <programlisting
- role="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 PHP 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 <xref
- linkend="zend.memory.memory-manager.settings.min-size" /> pour plus de détails.</para>
- </sect3>
- </sect2>
- </sect1>
|