[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / ja / module_specs / Zend_Memory-Overview.xml
blob0ebeeda9f04ca480d1742cad3db6760bb3179ed3
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 20827 -->
4 <sect1 id="zend.memory.overview">
5     <title>概要</title>
7     <sect2 id="zend.memory.introduction">
8         <title>導入</title>
10         <para>
11             <classname>Zend_Memory</classname> コンポーネントは、
12             限られたメモリ環境でデータを管理するためのものです。
13         </para>
15         <para>
16             メモリマネージャが要求に応じて
17             メモリオブジェクト (メモリコンテナ)
18             を作成し、必要に応じて透過的にスワップ/読み込みを行います。
19         </para>
21         <para>
22             たとえば、あるオブジェクトを作成あるいは読み込むことによって
23             メモリの使用量が制限値を超えてしまう場合に、
24             管理しているオブジェクトのいくつかをメモリの外部の
25             キャッシュにコピーします。
26             このようにして、管理しているオブジェクトのメモリ使用量が
27             制限値を超えないようにします。
28         </para>
30         <para>
31             メモリマネージャの保存機能は、
32             <link linkend="zend.cache.backends">Zend_Cache バックエンド</link>
33             を使用しています。
34         </para>
36         <example id="zend.memory.introduction.example-1">
37             <title>Zend_Memory コンポーネントの使用法</title>
39             <para>
40                 <methodname>Zend_Memory::factory()</methodname> は、
41                 指定したバックエンドオプションでメモリマネージャオブジェクトの
42                 インスタンスを作成します。
43             </para>
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]));
56     $fclose($f);
58     $loadedFiles[] = $memoryManager->create($data);
61 echo $loadedFiles[$index1]->value;
63 $loadedFiles[$index2]->value = $newValue;
65 $loadedFiles[$index3]->value[$charIndex] = '_';
66 ]]></programlisting>
67         </example>
68     </sect2>
70     <sect2 id="zend.memory.theory-of-operation">
72         <title>動作原理</title>
74         <para>
75             <classname>Zend_Memory</classname> コンポーネントは、以下の概念で構成されています。
77             <itemizedlist>
78                 <listitem>
79                     <para>メモリマネージャ</para>
80                 </listitem>
82                 <listitem>
83                     <para>メモリコンテナ</para>
84                 </listitem>
86                 <listitem>
87                     <para>ロックされたメモリオブジェクト</para>
88                 </listitem>
90                 <listitem>
91                     <para>移動可能なメモリオブジェクト</para>
92                 </listitem>
93             </itemizedlist>
94         </para>
96         <sect3 id="zend.memory.theory-of-operation.manager">
98             <title>メモリマネージャ</title>
100             <para>
101                 メモリマネージャは、アプリケーションからの要求に応じて
102                 (ロックされた、あるいは移動可能な) メモリオブジェクトを作成し、
103                 それをメモリコンテナオブジェクトにラッピングしたものを返します。
104             </para>
106         </sect3>
108         <sect3 id="zend.memory.theory-of-operation.container">
110             <title>メモリコンテナ</title>
112             <para>
113                 メモリコンテナは、文字列型の属性 <code>value</code> を
114                 (仮想的に、あるいは実際に) 保持します。
115                 この属性には、メモリオブジェクトの作成時に指定された値が含まれます。
116             </para>
118             <para>
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);
133 ]]></programlisting>
134             </para>
136             <note>
137                 <para>
138                     5.2 より前のバージョンの <acronym>PHP</acronym> を使用している場合は、
139                     value プロパティに直接アクセスするのではなく
140                     <link linkend="zend.memory.memory-objects.api.getRef">getRef()</link>
141                     メソッドを使用します。
142                 </para>
143             </note>
145         </sect3>
147         <sect3 id="zend.memory.theory-of-operation.locked">
149             <title>ロックされたメモリ</title>
151             <para>
152                 ロックされたメモリオブジェクトは、常にメモリ内に保持されます。
153                 ロックされたメモリに保存されたデータは、
154                 決してキャッシュにスワップされることはありません。
155             </para>
157         </sect3>
159         <sect3 id="zend.memory.theory-of-operation.movable">
161             <title>移動可能なメモリ</title>
163             <para>
164                 移動可能なメモリオブジェクトは、
165                 必要に応じて <classname>Zend_Memory</classname> がキャッシュにスワップしたり
166                 キャッシュから読み戻したりします。この処理は透過的に行われます。
167             </para>
169             <para>
170                 メモリマネージャは、指定した最小値より小さいサイズのオブジェクトはスワップしません。
171                 これは、パフォーマンスを考慮した判断です。詳細は
172                 <xref linkend="zend.memory.memory-manager.settings.min-size" />
173                 を参照ください。
174             </para>
176         </sect3>
178     </sect2>
180 </sect1>