Zend_Memory-Overview.xml 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <!-- EN-Revision: 13838 -->
  2. <sect1 id="zend.memory.overview">
  3. <title>Présentation</title>
  4. <sect2 id="zend.memory.introduction">
  5. <title>Introduction</title>
  6. <para>Le composant <classname>Zend_Memory</classname> est destiné à gérer des données dans un environnement où la mémoire
  7. est limitée.</para>
  8. <para>Les objets mémoire (conteneurs de mémoire) sont produits par le manager de mémoire sur demande et mis en
  9. cache/chargés d'une manière transparente quand c'est nécessaire.</para>
  10. <para>Par exemple, si la création ou le chargement d'un objet entraîne une utilisation de mémoire totale
  11. 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.
  12. 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
  13. application.</para>
  14. <para>Le manager de mémoire utilise les <link linkend="zend.cache.backends">backends Zend_Cache</link> comme
  15. fournisseurs de stockage.</para>
  16. <example id="zend.memory.introduction.example-1">
  17. <title>Utiliser le composant Zend_Memory</title>
  18. <para><classname>Zend_Memory::factory()</classname> instancie l'objet de management de la mémoire avec les options
  19. spécifiques du backend.</para>
  20. <programlisting role="php"><![CDATA[
  21. $backendOptions = array(
  22. 'cache_dir' => './tmp/'
  23. // Dossier où les blocks de mémoire peuvent être stockés
  24. );
  25. $memoryManager = Zend_Memory::factory('File', $backendOptions);
  26. $loadedFiles = array();
  27. for ($count = 0; $count < 10000; $count++) {
  28. $f = fopen($fileNames[$count], 'rb');
  29. $data = fread($f, filesize($fileNames[$count]));
  30. $fclose($f);
  31. $loadedFiles[] = $memoryManager->create($data);
  32. }
  33. echo $loadedFiles[$index1]->value;
  34. $loadedFiles[$index2]->value = $newValue;
  35. $loadedFiles[$index3]->value[$charIndex] = '_';
  36. ]]></programlisting>
  37. </example>
  38. </sect2>
  39. <sect2 id="zend.memory.theory-of-operation">
  40. <title>Aspect théorique</title>
  41. <para><classname>Zend_Memory</classname> travaille avec les concepts suivants : <itemizedlist>
  42. <listitem>
  43. <para>Manager de mémoire</para>
  44. </listitem>
  45. <listitem>
  46. <para>Conteneur de mémoire</para>
  47. </listitem>
  48. <listitem>
  49. <para>Objet de mémoire verrouillé</para>
  50. </listitem>
  51. <listitem>
  52. <para>Objet de mémoire mobile</para>
  53. </listitem>
  54. </itemizedlist></para>
  55. <sect3 id="zend.memory.theory-of-operation.manager">
  56. <title>Manager de mémoire</title>
  57. <para>Le manager de mémoire produit des objets de mémoire (verrouillé ou mobile) sur demande de
  58. l'utilisateur et les retourne encapsulé dans un objet conteneur de mémoire.</para>
  59. </sect3>
  60. <sect3 id="zend.memory.theory-of-operation.container">
  61. <title>Conteneur de mémoire</title>
  62. <para>Le conteneur de mémoire a un attribut <code>value</code> virtuel ou réel de type chaîne de caractères.
  63. Cet attribut contient la valeur de donnée indiquée au moment de la création de l'objet mémoire.</para>
  64. <para>Vous pouvez exploiter cet attribut <code>value</code> comme une propriété d'objet : <programlisting
  65. role="php"><![CDATA[
  66. $memObject = $memoryManager->create($data);
  67. echo $memObject->value;
  68. $memObject->value = $newValue;
  69. $memObject->value[$index] = '_';
  70. echo ord($memObject->value[$index1]);
  71. $memObject->value = substr($memObject->value, $start, $length);
  72. ]]></programlisting></para>
  73. <note>
  74. <para>Si vous utilisez une version de PHP inférieure à 5.2, utilisez la méthode <link
  75. linkend="zend.memory.memory-objects.api.getRef">getRef()</link> au lieu d'accéder directement à la
  76. valeur de la propriété.</para>
  77. </note>
  78. </sect3>
  79. <sect3 id="zend.memory.theory-of-operation.locked">
  80. <title>Objet de mémoire verrouillé</title>
  81. <para>Les objets de mémoire verrouillés sont toujours stockés dans la mémoire. Les données stockées dans la
  82. mémoire verrouillée ne sont jamais mis en cache.</para>
  83. </sect3>
  84. <sect3 id="zend.memory.theory-of-operation.movable">
  85. <title>Objet de mémoire mobile</title>
  86. <para>Les objets de mémoire mobiles sont mis en cache et chargés de manière transparente de/vers le cache
  87. par <classname>Zend_Memory</classname> si c'est nécessaire.</para>
  88. <para>Le manager de mémoire ne met pas en cache des objets ayant une taille plus petite que le minimum
  89. spécifié dans un soucis de performances. Voir <xref
  90. linkend="zend.memory.memory-manager.settings.min-size" /> pour plus de détails.</para>
  91. </sect3>
  92. </sect2>
  93. </sect1>