1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20827 -->
4 <sect1 id="zend.memory.overview">
7 <sect2 id="zend.memory.introduction">
11 <classname>Zend_Memory</classname> コンポーネントは、
12 限られたメモリ環境でデータを管理するためのものです。
18 を作成し、必要に応じて透過的にスワップ/読み込みを行います。
22 たとえば、あるオブジェクトを作成あるいは読み込むことによって
23 メモリの使用量が制限値を超えてしまう場合に、
24 管理しているオブジェクトのいくつかをメモリの外部の
26 このようにして、管理しているオブジェクトのメモリ使用量が
32 <link linkend="zend.cache.backends">Zend_Cache バックエンド</link>
36 <example id="zend.memory.introduction.example-1">
37 <title>Zend_Memory コンポーネントの使用法</title>
40 <methodname>Zend_Memory::factory()</methodname> は、
41 指定したバックエンドオプションでメモリマネージャオブジェクトの
44 <programlisting language="php"><![CDATA[
45 $backendOptions = array(
46 'cache_dir' => './tmp/' // スワップしたメモリブロックを配置するディレクトリ
49 $memoryManager = Zend_Memory::factory('File', $backendOptions);
51 $loadedFiles = array();
53 for ($count = 0; $count < 10000; $count++) {
54 $f = fopen($fileNames[$count], 'rb');
55 $data = fread($f, filesize($fileNames[$count]));
58 $loadedFiles[] = $memoryManager->create($data);
61 echo $loadedFiles[$index1]->value;
63 $loadedFiles[$index2]->value = $newValue;
65 $loadedFiles[$index3]->value[$charIndex] = '_';
70 <sect2 id="zend.memory.theory-of-operation">
75 <classname>Zend_Memory</classname> コンポーネントは、以下の概念で構成されています。
87 <para>ロックされたメモリオブジェクト</para>
91 <para>移動可能なメモリオブジェクト</para>
96 <sect3 id="zend.memory.theory-of-operation.manager">
98 <title>メモリマネージャ</title>
101 メモリマネージャは、アプリケーションからの要求に応じて
102 (ロックされた、あるいは移動可能な) メモリオブジェクトを作成し、
103 それをメモリコンテナオブジェクトにラッピングしたものを返します。
108 <sect3 id="zend.memory.theory-of-operation.container">
110 <title>メモリコンテナ</title>
113 メモリコンテナは、文字列型の属性 <code>value</code> を
114 (仮想的に、あるいは実際に) 保持します。
115 この属性には、メモリオブジェクトの作成時に指定された値が含まれます。
119 この属性 <code>value</code> は、オブジェクトのプロパティとして扱うことができます。
121 <programlisting language="php"><![CDATA[
122 $memObject = $memoryManager->create($data);
124 echo $memObject->value;
126 $memObject->value = $newValue;
128 $memObject->value[$index] = '_';
130 echo ord($memObject->value[$index1]);
132 $memObject->value = substr($memObject->value, $start, $length);
138 5.2 より前のバージョンの <acronym>PHP</acronym> を使用している場合は、
139 value プロパティに直接アクセスするのではなく
140 <link linkend="zend.memory.memory-objects.api.getRef">getRef()</link>
147 <sect3 id="zend.memory.theory-of-operation.locked">
149 <title>ロックされたメモリ</title>
152 ロックされたメモリオブジェクトは、常にメモリ内に保持されます。
154 決してキャッシュにスワップされることはありません。
159 <sect3 id="zend.memory.theory-of-operation.movable">
161 <title>移動可能なメモリ</title>
165 必要に応じて <classname>Zend_Memory</classname> がキャッシュにスワップしたり
166 キャッシュから読み戻したりします。この処理は透過的に行われます。
170 メモリマネージャは、指定した最小値より小さいサイズのオブジェクトはスワップしません。
171 これは、パフォーマンスを考慮した判断です。詳細は
172 <xref linkend="zend.memory.memory-manager.settings.min-size" />