Zend_Memory-Overview.xml 5.1 KB

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