[ZF-10089] Zend_Log
[zend.git] / documentation / manual / ar / module_specs / Zend_Cache-Frontends.xml
blobd68fa0c5a19d0eb3a4a277b659d4a8da324d9a7f
1 <sect1 id="zend.cache.frontends">\r
2     <title>الـ frontends المتوفرة فى Zend_Cache</title>\r
3 \r
4     <sect2 id="zend.cache.core">\r
5         <title>Zend_Cache_Core</title>\r
6         <sect3 id="zend.cache.core.introduction">\r
7             <title>مقدمة</title>\r
8             <para>\r
9                 <code>Zend_Cache_Core</code> هو frontend مميز لأنه جوهر الـ module .\r
10 هو عبارة cache frontend عام و هناك classes أخرى ممتدة منه.\r
11             </para>\r
12             <note><para>\r
13                 كل الـ frontends ترث من <code>Zend_Cache_Core</code> و بهذا كل الـ methods\r
14 و الـ options الخاصة به (سيتم توضيحها لاحقاً) متوفرة فى الـ frontends الأخرى , لذلك لن نقوم بشرحها هناك.\r
15             </para></note>\r
16         </sect3>\r
17         <sect3 id="zend.cache.core.options">\r
18             <title>الـ options المتوفرة</title>\r
19             <para>\r
20                 هذه الـ options يتم تمريرها الى الـ factory method كما كان موضحاً فى امثلة سابقة.\r
21             </para>\r
22             <table>\r
23                 <title>الـ options المتوفرة لـ Zend_Cache_Core</title>\r
24                 <tgroup cols="4">\r
25                      <thead>\r
26                           <row>\r
27                             <entry>الـ Option</entry>\r
28                             <entry>الـ Data Type</entry>\r
29                             <entry>الـ Default Value</entry>\r
30                             <entry>الوصف</entry>\r
31                         </row>\r
32                      </thead>\r
33                      <tbody>\r
34                           <row>\r
35                               <entry><code>caching</code></entry>\r
36                               <entry><code>boolean</code></entry>\r
37                               <entry><code>true</code></entry>\r
38                               <entry>\r
39                                   تقوم بإقاف او تشغيل عملية الـ caching ( من الممكن ان تكن مفيدة عند عمل debuging للكود الواقع فى\r
40 نطاق عمل عملية الـ caching ).\r
41                               </entry>\r
42                           </row>\r
43                           <row>\r
44                               <entry><code>lifeTime</code></entry>\r
45                               <entry><code>int</code></entry>\r
46                               <entry><code>3600</code></entry>\r
47                               <entry>\r
48                                 فترة صلاحية الـ cache record (بالثوانى), إن كانت قيمتها تساوى null فسيكون الـ cache record\r
49 صالح للإستخدام دائما.\r
50                               </entry>\r
51                           </row>\r
52                           <row>\r
53                               <entry><code>logging</code></entry>\r
54                               <entry><code>boolean</code></entry>\r
55                               <entry><code>false</code></entry>\r
56                               <entry>\r
57                                 إن كانت قيمتها تساوى TRUE, سيتم تنشيط عملية الـ loging من خلال <code>Zend_Log</code> .\r
58 (لكن سيبطئ من عمل النظام نسبياً)\r
59                               </entry>\r
60                           </row>\r
61                           <row>\r
62                               <entry><code>writeControl</code></entry>\r
63                               <entry><code>boolean</code></entry>\r
64                               <entry><code>true</code></entry>\r
65                               <entry>\r
66                                تقوم بايقاف او تشغيل الـ write control (أى سيتم قرائة الـ cache بعد حفظه للتأكد من\r
67 عدم وجود اخطاء به).\r
68 تشغيل الـ write control سيتسبب فى ابطاء عملية كتابة "حفظ" الـ cache قليلا, لكنه\r
69 لن يؤثر فى علية القرائة.\r
70 (يمكن ان بساعد فى اكتشاف ملفات الـ cache المعطوبة "الفاسدة" و لكنه برغم ذالك لا يعتبر\r
71 control ممتاز )\r
72                               </entry>\r
73                           </row>\r
74                           <row>\r
75                               <entry><code>automaticSerialization</code></entry>\r
76                               <entry><code>boolean</code></entry>\r
77                               <entry><code>false</code></entry>\r
78                               <entry>\r
79                                 تقوم بتشغيل او ايقاف عملية الـ serialization التلقائية , يمكن ان يتم استخدامها عند الحاجة لحفظ\r
80 بيانات مباشرة , حيث ان هذه البيانات ليست من النوع string.\r
81  (لكنها ابطء)\r
82                               </entry>\r
83                           </row>\r
84                           <row>\r
85                               <entry><code>automaticCleaningFactor</code></entry>\r
86                               <entry><code>int</code></entry>\r
87                               <entry><code>10</code></entry>\r
88                               <entry>\r
89                                 تقوم بتشغيل او ايقاف عملية التنظيف (garbage collector):\r
90 القيمة 0 تعنى إيقاف عملية التنظيف التلقائى للـ cache ,\r
91 القيمة 1 تعنى تشغيل عملية التنظيف بشكل منتظم,\r
92 و عندما تكن القيمة هى x &gt; 1 سيتم تنفيذ عملية تنظيف تلقائى عشوائية لكل عدد x من\r
93 عمليات الكتابة.\r
94                               </entry>\r
95                           </row>\r
96                       </tbody>\r
97                   </tgroup>\r
98               </table>\r
99         </sect3>\r
101         <sect3 id="zend.cache.core.examples">\r
102             <title>امثلة</title>\r
103             <para>\r
104                 تم اعطاء مثال فى بداية هذا الفصل.\r
105             </para>\r
106             <para>\r
107                 إن كنت تقم بحفظ بيانات من النوع string فقط فى الـ cache (من الممكن حفظ\r
108 بيانات من النوع bool ايضا بتشغيل الـ option المسمى "automaticSerialization" ) ,\r
109 يمكنك ان تستخدم بنية كود ادق مثل هذه :\r
110             </para>\r
111             <programlisting role="php"><![CDATA[<?php\r
113 // we assume you already have $cache\r
115 $id = 'myBigLoop'; // cache id of "what we want to cache"\r
117 if (!($data = $cache->load($id))) {\r
118     // cache miss\r
120     $data = '';\r
121     for ($i = 0; $i < 10000; $i++) {\r
122         $data = $data . $i;\r
123     }\r
125     $cache->save($data);\r
129 // [...] do something with $data (echo it, pass it on etc.)\r
131 ?>]]>       </programlisting>\r
132             <para>\r
133                 إن كنت تريد حفظ اكثر من بلوك او مجموعة بيانات مختلفة, فهى نفس الفكرة :\r
134             </para>\r
135             <programlisting role="php"><![CDATA[<?php\r
137 // make sure you use unique identifiers:\r
138 $id1 = 'foo';\r
139 $id2 = 'bar';\r
141 // block 1\r
142 if (!($data = $cache->load($id1))) {\r
143     // cache missed\r
145     $data = '';\r
146     for ($i=0;$i<10000;$i++) {\r
147         $data = $data . $i;\r
148     }\r
150     $cache->save($data);\r
153 echo($data);\r
155 // this isn't affected by caching\r
156 echo('NEVER CACHED! ');\r
158 // block 2\r
159 if (!($data = $cache->load($id2))) {\r
160     // cache missed\r
162     $data = '';\r
163     for ($i=0;$i<10000;$i++) {\r
164         $data = $data . '!';\r
165     }\r
167     $cache->save($data);\r
170 echo($data);\r
172 ?>]]>       </programlisting>\r
173         </sect3>\r
174     </sect2>\r
176     <sect2 id="zend.cache.frontend.output">\r
177         <title>Zend_Cache_Frontend_Output</title>\r
178         <sect3 id="zend.cache.frontend.output.introduction">\r
179             <title>مقدمة</title>\r
180             <para>\r
181                 <code>Zend_Cache_Frontend_Output</code> هو frontend يستخدم فى التقاط البيانات\r
182 المخرجة. يستخدم خاصية الـ output buffering التى تقدمها لغة PHP ليلتقط كل شئ يتم اخراجه بين\r
183 الـ methods المسمى <code>()start</code> و <code>()end</code>.\r
184             </para>\r
185         </sect3>\r
186         <sect3 id="zend.cache.frontend.output.options">\r
187             <title>الـ options المتوفرة</title>\r
188             <para>\r
189                 هذا الـ frontend لا يحتوى اى options جديدة بخلاف الموجودة فى\r
190 <code>Zend_Cache_Core</code>.\r
191             </para>\r
192         </sect3>\r
194         <sect3 id="zend.cache.frontend.output.examples">\r
195             <title>امثلة</title>\r
196             <para>\r
197                 تم اعطاء مثال فى بداية هذا الفصل, ها هو مع بعض التعديلات الصغيرة:\r
198             </para>\r
199             <programlisting role="php"><![CDATA[<?php\r
201 // if it is a cache miss, output buffering is triggered\r
202 if(!$cache->start('mypage')):\r
204 // output everything as usual\r
205 echo 'Hello world! ';\r
206 echo 'This is cached ('.time().') ';\r
208 $cache->end(); // output buffering ends\r
209 endif;\r
211 echo 'This is never cached ('.time().').';\r
213 ?>]]>       </programlisting>\r
214             <para>\r
215                 بإستخدام هذه الطريقة يمكنك بسهولة إدخال خاصية الـ caching لمخرجات الأكواد فى مشروعك بإستخدام القليل او\r
216 ربما عدم الأحتياج لعمل refactoring.\r
217             </para>\r
218         </sect3>\r
219     </sect2>\r
221     <sect2 id="zend.cache.frontend.function">\r
222         <title>Zend_Cache_Frontend_Function</title>\r
223         <sect3 id="zend.cache.frontend.function.introduction">\r
224             <title>مقدمة</title>\r
225             <para>\r
226                 تقوم <code>Zend_Cache_Frontend_Function</code> بعمل cache\r
227 لناتج استدعاء دالة ما, و لديها method واحد رئيسى يسمى <code>()call</code> و الذى\r
228 يأخذ اسم الدالة المراد استدعائها و array تحتوتى الـ parameters التى سيتم تمريرها لهذه الدالة.\r
229             </para>\r
230         </sect3>\r
231         <sect3 id="zend.cache.frontend.function.options">\r
232             <title>الـ options المتوفرة</title>\r
233             <table>\r
234                 <title>الـ options المتوفرة لـ Zend_Cache_Frontend_Function</title>\r
235                 <tgroup cols="4">\r
236                      <thead>\r
237                           <row>\r
238                             <entry>الـ Option</entry>\r
239                             <entry>الـ Data Type</entry>\r
240                             <entry>الـ Default Value</entry>\r
241                             <entry>الوصف</entry>\r
242                         </row>\r
243                      </thead>\r
244                      <tbody>\r
245                           <row>\r
246                               <entry><code>cacheByDefault</code></entry>\r
247                               <entry><code>boolean</code></entry>\r
248                               <entry><code>true</code></entry>\r
249                               <entry>\r
250                                   إن كانت قيمتها true , سيتم تنفيذ عملية الـ cache لكل عملية استدعاء دالة (by default).\r
251                               </entry>\r
252                          </row>\r
253                          <row>\r
254                               <entry><code>cachedFunctions</code></entry>\r
255                               <entry><code>array</code></entry>\r
256                               <entry></entry>\r
257                               <entry>\r
258                                   اسماء الـ functions التى سيتم عمل cache لها دائما.\r
259                               </entry>\r
260                          </row>\r
261                          <row>\r
262                               <entry><code>nonCachedFunctions</code></entry>\r
263                               <entry><code>array</code></entry>\r
264                               <entry></entry>\r
265                               <entry>\r
266                                   اسماء الـ functions التى لا يجب عمل cache لها ابدا.\r
267                               </entry>\r
268                          </row>\r
269                       </tbody>\r
270                   </tgroup>\r
271               </table>\r
272         </sect3>\r
274         <sect3 id="zend.cache.frontend.function.examples">\r
275             <title>امثلة</title>\r
276             <para>\r
277                 استخدام الـ method المسمى <code>()call</code> هو نفس طريقة استخدام\r
278 دالة لغة PHP المسمى <code>()call_user_func_array</code> :\r
279             </para>\r
280             <programlisting role="php"><![CDATA[<?php\r
282 $cache->call('veryExpensiveFunc', $params);\r
284 # $params is an array\r
285 # for example to call (with caching) veryExpensiveFunc(1, 'foo', 'bar'), you will use\r
286 # $cache->call('veryExpensiveFunc', array(1, 'foo', 'bar'))\r
288 ?>]]>       </programlisting>\r
289             <para>\r
290                 <code>Zend_Cache_Frontend_Function</code> ذكية كفاية لتقوم بعمل\r
291 cache لكل من ناتج الدالة العائد من "return" و البيانات المخرجة داخل الدالة (مثل عمل طباعة\r
292 لبعض البيانات من داخل الدالة).\r
293             </para>\r
294             <note><para>\r
295                 يمكنك تمرير اى دالة سواء كانت من دوال اللغة او دالة انت انشئتها بإستثناء الدوال التالية :\r
296 <code>array</code>,\r
297  <code>echo</code>,\r
298 <code>empty</code>,\r
299  <code>eval</code>,\r
301   <code>exit</code>,\r
302  <code>isset</code>,\r
303 <code>list</code>\r
304 , <code>print</code>\r
306   <code>unset</code>.\r
307             </para></note>\r
308         </sect3>\r
309     </sect2>\r
311     <sect2 id="zend.cache.frontend.class">\r
312         <title>Zend_Cache_Frontend_Class</title>\r
313         <sect3 id="zend.cache.frontend.class.introduction">\r
314             <title>مقدمة</title>\r
315             <para>\r
316                 يختلف <code>Zend_Cache_Frontend_Class</code> عن\r
317 <code>Zend_Cache_Frontend_Function</code> حيث انه\r
318 يقوم بعمل cache لعمليات استدعاء الـ objects و الـ static methods.\r
319             </para>\r
320         </sect3>\r
321         <sect3 id="zend.cache.frontend.class.options">\r
322             <title>الـ options المتوفر</title>\r
323             <table>\r
324                 <title>الـ options المتوفرة لـ Zend_Cache_Frontend_Class</title>\r
325                 <tgroup cols="4">\r
326                      <thead>\r
327                           <row>\r
328                             <entry>الـ Option</entry>\r
329                             <entry>الـ Data Type</entry>\r
330                             <entry>الـ Default Value</entry>\r
331                             <entry>الوصف</entry>\r
332                         </row>\r
333                      </thead>\r
334                      <tbody>\r
335                           <row>\r
336                               <entry><code>cachedEntity</code> (مطلوب)</entry>\r
337                               <entry><code>mixed</code></entry>\r
338                               <entry></entry>\r
339                               <entry>\r
340                                   إن كانت قيمتها عبارة عن اسم class, سيتم عمل cache للـ class على انه abstract\r
341 و سيتم استخدام طلبات الـ static mithods الخاصة به.\r
342 إذا كانت قيمتها عبارة عن object, سيتم عمل cache لكل الـ methods الخاصة\r
343 بهذا الـ object.\r
344                               </entry>\r
345                          </row>\r
346                          <row>\r
347                               <entry><code>cacheByDefault</code></entry>\r
348                               <entry><code>boolean</code></entry>\r
349                               <entry><code>true</code></entry>\r
350                               <entry>\r
351                                   إن كانت تحمل القيمة true, كل الطلبات "calls" سيتم عمل cache لها تلقائيا.\r
352                               </entry>\r
353                          </row>\r
354                          <row>\r
355                               <entry><code>cachedMethods</code></entry>\r
356                               <entry><code>array</code></entry>\r
357                               <entry></entry>\r
358                               <entry>\r
359                                  اسماء الـ methods التى يستم عمل cache لها دائما.\r
360                               </entry>\r
361                          </row>\r
362                          <row>\r
363                               <entry><code>nonCachedMethods</code></entry>\r
364                               <entry><code>array</code></entry>\r
365                               <entry></entry>\r
366                               <entry>\r
367                                   اسماء الـ methods التى لا يجب عمل cache لها ابدا.\r
368                               </entry>\r
369                          </row>\r
370                       </tbody>\r
371                   </tgroup>\r
372               </table>\r
373         </sect3>\r
375         <sect3 id="zend.cache.frontend.class.examples">\r
376             <title>امثلة</title>\r
377             <para>\r
378                 مثال على عمل cache لأستدعائات الـ static methods:\r
379             </para>\r
380             <programlisting role="php"><![CDATA[<?php\r
382 class test {\r
384     # Static method\r
385     public static function foobar($param1, $param2) {\r
386         echo "foobar_output($param1, $param2)";\r
387         return "foobar_return($param1, $param2)";\r
388     }\r
392 // [...]\r
393 $frontendOptions = array(\r
394     'cachedEntity' => 'test' // The name of the class\r
395 );\r
396 // [...]\r
398 # The cached call\r
399 $res = $cache->foobar('1', '2');\r
401 ?>]]>       </programlisting>\r
402             <para>\r
403                 لعمل cache للـ methods العادية:\r
404             </para>\r
405             <programlisting role="php"><![CDATA[<?php\r
407 class test {\r
409     private $_string = 'hello !';\r
411     public function foobar2($param1, $param2) {\r
412         echo($this->_string);\r
413         echo "foobar2_output($param1, $param2)";\r
414         return "foobar2_return($param1, $param2)";\r
415     }\r
419 // [...]\r
420 $frontendOptions = array(\r
421     'cachedEntity' => new test() // An instance of the class\r
422 );\r
423 // [...]\r
425 # The cached call\r
426 $res = $cache->foobar2('1', '2');\r
428 ?>]]>       </programlisting>\r
429         </sect3>\r
430     </sect2>\r
432     <sect2 id="zend.cache.frontends.file">\r
433         <title>Zend_Cache_Frontend_File</title>\r
434         <sect3 id="zend.cache.frontends.file.introduction">\r
435             <title>مقدمة</title>\r
436             <para>\r
437                 <code>Zend_Cache_Frontend_File</code> هو frontend يعتمد\r
438 على اخر وقت تعديل ملف معين "master file".\r
439 يتم استخدامه على سبيل المثال مع ملفات الـ configuration او الملفات التى تخص\r
440 الـ templating.\r
441             </para>\r
442             <para>\r
443                 على سبيل المثال: انت لديك ملف XML يحتوى على الـ configurations الخاصة ببرنامجك,\r
444 هذا الملف يتم قرائة محتوياته بإستخدام دالة معينة و التى تعيد "return" إلينا "config object"\r
445 (مثل <code>Zend_Config</code> ).\r
446 عن طريق <code>Zend_Cache_Frontend_File</code> يمكنك\r
447 حفظ الـ "config object" فى الـ cache (لتتجنب عملية قرائة ملف الـ XML عند كل مرة)\r
448 لكن بالأعتماد بشدة على الـ "master file" اى ملف الـ XML.\r
449 إذاً, إن تم تعديل ملف الـ XML سيتم اعتبار النسخة فى الـ cache غير صالحة للإستخدام و سيتم إنشاء\r
450 اخرى جديدة.\r
451             </para>\r
452         </sect3>\r
453         <sect3 id="zend.cache.frontends.file.options">\r
454             <title>الـ options المتوفرة</title>\r
455             <table>\r
456                 <title>الـ options المتوفرة لـ Zend_Cache_Frontend_File</title>\r
457                 <tgroup cols="4">\r
458                      <thead>\r
459                           <row>\r
460                             <entry>الـ Option</entry>\r
461                             <entry>الـ Data Type</entry>\r
462                             <entry>الـ Default Value</entry>\r
463                             <entry>الوصف</entry>\r
464                         </row>\r
465                      </thead>\r
466                      <tbody>\r
467                           <row>\r
468                               <entry><code>masterFile (إجبارى)</code></entry>\r
469                               <entry><code>string</code></entry>\r
470                               <entry><code></code></entry>\r
471                               <entry>\r
472                                   المسار الكامل للملف "master file".\r
473                               </entry>\r
474                          </row>\r
475                       </tbody>\r
476                   </tgroup>\r
477               </table>\r
478         </sect3>\r
479         <sect3 id="zend.cache.frontends.file.examples">\r
480             <title>امثلة</title>\r
481             <para>\r
482                 إستخدام هذا الـ frontend هو نفس طريقة استخدام <code>Zend_Cache_Core</code>,\r
483 لذلك لا يوجد حاجة إلى مثال جديد, الشئ الوحيد الذى ستقوم به هو تعريف قيمة\r
484 <code>masterFile</code> عند إستخدام الـ factory.\r
485             </para>\r
486         </sect3>\r
487     </sect2>\r
489     <sect2 id="zend.cache.frontends.page">\r
490         <title>Zend_Cache_Frontend_Page</title>\r
491         <sect3 id="zend.cache.frontends.page.introduction">\r
492             <title>مقدمة</title>\r
493             <para>\r
494                 <code>Zend_Cache_Frontend_Page</code> يتشابه مع\r
495 <code>Zend_Cache_Frontend_Output</code> إلا انه تم تصميمه\r
496 لعمل cache لصفحة كاملة.\r
497 فلا يمكن إستخدام <code>Zend_Cache_Frontend_Page</code>\r
498 لعمل cache لجزء او بلوك معين فقط.\r
499             </para>\r
500             <para>\r
501                 على الجانب الأخر, الـ "cache id" يتم حسابه من خلال\r
502 <code>['SERVER['REQUEST_URI_$</code> و (اعتمادا على قيم الـ options يستخدم التالى)\r
503 <code>GET</code>, <code>POST</code>,\r
504 <code>SESSION</code>, <code>COOKIE</code>,\r
505 <code>FILES</code>.\r
506 غير ذلك, يجب عليك استدعاء method واحد فقط و هو (<code>()start</code>) لأن\r
507 <code>()end</code> يتم إستدعائه تلقائيا عند إنتهاء الصفحة.\r
508             </para>\r
509             <para>\r
510                 الى هذه اللحظة لم يتم تنفيذه لكننا ننوى إضافة نظام HTTP شرطى لحفظ المذيد من الـ bandwith\r
511 (سيقوم النظام بإرسال الهيدر "HTTP 304" أى لم يتم تعديل الملف و هذا إذا تم إيجاد نسخة cache\r
512 قابلة للأستخدام "طازجة" و إذا كان لدى المتصفح ايضا نسخة صالحة "طازجة" من هذه الصفحة.\r
513             </para>\r
514             <note><para>\r
515               Zend_Cache_Frontend_Page يعتبر فى المرحلة alpha الأن , إى انه سيتم عمل\r
516  تطويرات جديدة له مع مرور الوقت.\r
517             </para></note>\r
518         </sect3>\r
519         <sect3 id="zend.cache.frontends.page.options">\r
520             <title>الـ options المتوفرة</title>\r
521             <table>\r
522                 <title>الـ options المتوفرة لـ Zend_Cache_Frontend_Page</title>\r
523                 <tgroup cols="4">\r
524                      <thead>\r
525                           <row>\r
526                             <entry>الـ Option</entry>\r
527                             <entry>الـ Data Type</entry>\r
528                             <entry>الـ Default Value</entry>\r
529                             <entry>الوصف</entry>\r
530                         </row>\r
531                      </thead>\r
532                      <tbody>\r
533                           <row>\r
534                               <entry><code>httpConditional</code></entry>\r
535                               <entry><code>boolean</code></entry>\r
536                               <entry><code>false</code></entry>\r
537                               <entry>\r
538                                   إستخدم نظام الـ HTTP الشرطى "httpConditional system" (لم يتم دعمه الى الأن).\r
539                               </entry>\r
540                          </row>\r
541                          <row>\r
542                               <entry><code>debugHeader</code></entry>\r
543                               <entry><code>boolean</code></entry>\r
544                               <entry><code>false</code></entry>\r
545                               <entry>\r
546                                   إن كانت تحمل القيمة true, بيانات الـ debugging سيتم إضافتها قبل كل صفحة لها cache.\r
547                               </entry>\r
548                          </row>\r
549                          <row>\r
550                                <entry><code>defaultOptions</code></entry>\r
551                               <entry><code>array</code></entry>\r
552                               <entry><code>(.انظر الوصف.)array</code></entry>\r
553                               <entry>\r
554                                   associative array تحتوى على الـ default options :\r
555                                   <itemizedlist>\r
556                                       <listitem>\r
557                                         <para>\r
558                                             <code>(boolean, true by default) cache</code> :\r
559                                             إن كانت تحمل قيمة true فالـ cache مفعل\r
560                                         </para>\r
561                                       </listitem>\r
562                                       <listitem>\r
563                                         <para>\r
564                                             <code>(boolean, false by default) cacheWithGetVariables</code> :\r
565                                             إن كانت تحمل القيمة true فالـ cache مفعل حتى لو كان هناك قيم فى المصفوفة\r
566                                             <code>GET_$</code>\r
567                                         </para>\r
568                                     </listitem>\r
569                                       <listitem>\r
570                                         <para>\r
571                                             <code>(boolean, false by default) cacheWithPostVariables</code> :\r
572                                             إن كانت تحمل القيمة true فالـ cache مفعل حتى لو كان هناك قيم فى المصفوفة\r
573                                             <code>POST_$</code>\r
574                                         </para>\r
575                                     </listitem>\r
576                                       <listitem>\r
577                                         <para>\r
578                                             <code>(boolean, false by default) cacheWithSessionVariables</code> :\r
579                                             إن كانت تحمل القيمة true فالـ cache مفعل حتى لو كان هناك قيم فى المصفوفة\r
580                                             <code>SESSION_$</code>\r
581                                         </para>\r
582                                       </listitem>\r
583                                       <listitem>\r
584                                         <para>\r
585                                             <code>(boolean, false by default) cacheWithFilesVariables</code> :\r
586                                             إن كانت تحمل القيمة true فالـ cache مفعل حتى لو كان هناك قيم فى المصفوفة\r
587                                             <code>FILES_$</code>\r
588                                         </para>\r
589                                       </listitem>\r
590                                       <listitem>\r
591                                         <para>\r
592                                             <code>(boolean, false by default) cacheWithCookieVariables</code> :\r
593                                             إن كانت تحمل القيمة true فالـ cache مفعل حتى لو كان هناك قيم فى المصفوفة\r
594                                             <code>COOKIE_$</code>\r
595                                         </para>\r
596                                       </listitem>\r
597                                       <listitem>\r
598                                         <para>\r
599                                             <code>(boolean, true by default) makeIdWithGetVariables</code> :\r
600                                             إن كانت تحمل القيمة true فقيمة الـ "cache id" تعتمد على محتويات المصفوفة\r
601                                             <code>GET_$</code>\r
602                                         </para>\r
603                                       </listitem>\r
604                                       <listitem>\r
605                                         <para>\r
606                                             <code>(boolean, true by default) makeIdWithPostVariables</code> :\r
607                                             إن كانت تحمل القيمة true فقيمة الـ "cache id" تعتمد على محتويات المصفوفة\r
608                                             <code>POST_$</code>\r
609                                         </para>\r
610                                       </listitem>\r
611                                       <listitem>\r
612                                         <para>\r
613                                             <code>(boolean, true by default) makeIdWithSessionVariables</code> :\r
614                                             إن كانت تحمل القيمة true فقيمة الـ "cache id" تعتمد على محتويات المصفوفة\r
615                                             <code>SESSION_$</code>\r
616                                         </para>\r
617                                       </listitem>\r
618                                       <listitem>\r
619                                         <para>\r
620                                             <code>(boolean, true by default) makeIdWithFilesVariables</code> :\r
621                                             إن كانت تحمل القيمة true فقيمة الـ "cache id" تعتمد على محتويات المصفوفة\r
622                                             <code>FILES_$</code>\r
623                                         </para>\r
624                                       </listitem>\r
625                                       <listitem>\r
626                                         <para>\r
627                                             <code>(boolean, true by default) makeIdWithCookieVariables</code> :\r
628                                             إن كانت تحمل القيمة true فقيمة الـ "cache id" تعتمد على محتويات المصفوفة\r
629                                             <code>COOKIE_$</code>\r
630                                         </para>\r
631                                       </listitem>\r
632                                   </itemizedlist>\r
633                               </entry>\r
634                          </row>\r
635                          <row>\r
636                               <entry><code>regexps</code></entry>\r
637                               <entry><code>array</code></entry>\r
638                               <entry><code>array()</code></entry>\r
639                               <entry>\r
640                                     associative array تضع بها الـ options الخاصة بـ REQUEST_URI.\r
641 المفتاح "key" سيكون عبارة عن جملة regex من النوع (PCRE), و القيم "values"\r
642 ستكون عبارة عن associative array تحتوى مجموعة من الـ options التى سيتم\r
643 تنفيذها إذا توافقت جملة الـ regex مع ['SERVER['REQUEST_URI_$\r
644 (انظر الى defaultOptions لقائمة بالـ options المتوفرة).\r
645 إذا توافقت اكثر من جملة regexp مع قيمة ['SERVER['REQUEST_URI_$ , سيتم\r
646 إستخدام اخر واحد فقط.\r
647                               </entry>\r
648                          </row>\r
649                       </tbody>\r
650                   </tgroup>\r
651               </table>\r
652         </sect3>\r
653         <sect3 id="zend.cache.frontends.page.examples">\r
654             <title>امثلة</title>\r
655             <para>\r
656                 إستخدام Zend_Cache_Frontend_Page سهل جدا :\r
657             </para>\r
658             <programlisting role="php"><![CDATA[<?php\r
660 // [...] // require, configuration and factory\r
662 $cache->start();\r
663 // if the cache is hit, the result is sent to the browser and the script stop here\r
665 // rest of the page ...\r
667 ?>]]>       </programlisting>\r
668             <para>\r
669                 مثال اكثر تعقيدا يوضح اسلوب لتنفيذ إدارة مركزية للـ cache داخل ملف bootstrap\r
670 "ملف رئيسى لتشغيل البرنامج".\r
671 (مثلا للإستخدام مع Zend_Controller)\r
672             </para>\r
673             <programlisting role="php"><![CDATA[<?php\r
675 // [...] you should avoid to put too much lines before the cache section\r
676 // [...] for example, for optimal performances, "require_once" or "Zend_Loader::loadClass" should be\r
677 // [...] after the cache section\r
679 require_once 'Zend/Cache.php';\r
681 $frontendOptions = array(\r
682    'lifeTime' => 7200,\r
683    'debugHeader' => true, // for debuging\r
684    'regexps' => array(\r
685        '^/$' => array('cache' => true),         // cache the whole IndexController\r
686        '^/index/' => array('cache' => true),    // cache the whole IndexController\r
687        '^/article/' => array('cache' => false), // we don't cache the ArticleController...\r
688        '^/article/view/' => array(              // ...but we cache the "view" action of\r
689            'cache' => true,                     // this ArticleController\r
690            'cacheWithPostVariables' => true,    // and we cache even there are some variables in $_POST\r
691            'makeIdWithPostVariables' => true,   // (but the cache will be dependent of the $_POST array)\r
692        )\r
693    )\r
694 );\r
695 $backendOptions = array(\r
696     'cacheDir' => '/tmp/'\r
697 );\r
699 // getting a Zend_Cache_Frontend_Page object\r
700 $cache = Zend_Cache::factory('Page', 'File', $frontendOptions, $backendOptions);\r
702 $cache->start();\r
703 // if the cache is hit, the result is sent to the browser and the script stop here\r
705 // [...] the end of the bootstrap file (these lines won't be executed if the cache is hit)\r
707 ?>]]>       </programlisting>\r
708         </sect3>\r
709     </sect2>\r
710 </sect1>\r