| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- <?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>
|