بعدما انشأنا الكلاس ،
الحين سوف نقوم بانشاء دالة كتابة ملفات الكاش وليكن اسمها ، export
هذه الدالة سوف تحمل 3 بارامترات ،
$name,
$content
$time=3600
المتغير الاول ،هو اسم الملف ،
$content ، محتوى البينات المراد عمل الكاش لها ،
$time ، فترة الاغراق ـ، او فترة بقاء الكاش ، وجلعنا القيمة الافتراضية ساعة ،
نظرة على محتوى ملف الكاش ، مثال ،
رمز PHP:
<code style="white-space:nowrap"> <code> <?php
//FILE CACH GENERATED AUTOMATICALLY By Traidnt system cach 31-05-2014 12:21:09 PM
(!defined("SECURITY") ? exit("FILE NOT FOUND 404") : null);
if(time() > 1275308479) return false;
$content = 's:11:"the_the_the";';
?> </code> </code>
- هذا الملف فوق ،هو ملف تم توليده اوتوماتيكيا بدالة توليد ملفات الكاش ،
- في البداية عملنا حماية من الولوج المباشر الى الملف ـ
- ثم بعد ذلك حددنا طريقة مقارنة التوقيت الحالي ، وتوقيت التوليد + فترة البقاء ، اذا لم يتحقق الشرط سوف يرجع قيمة false
- ثم بعد ذلك متغير اسمه content ، هذا هو المتغير الذي سوف يحمل البيانات المراد عمل الكاش لها ، وهو الذي سوف نستدعيه بعد ذلك ، وتم تمرير البيانات قبل اضافتها للملف بر دالة serialize ودالة var_export ، وذلك لتفادي ضياع اية بيانات من المتغير الذي تم تمريره ،
- وبعد ذلك سوف نعمل كتابة للملف الجديد ،على المجلد الذي تم اختياره ،
- وفي الاتي الدالة كاملة ،
رمز PHP:
<code style="white-space:nowrap"> <code> <? function export($name,$content,$time=3600)
{
$new_content = '<?php'."\n\n\n";
$new_content .= '//FILE CACH GENERATED AUTOMATICALLY By Traidnt system cach ' . gmdate('d-m-Y h:i:s A ') . "\n\n";
$new_content .= '(!defined("SECURITY") ? exit("FILE NOT FOUND 404") : null);' . "\n\n";
$new_content .='if(time() > ' . (time() + $time) . ') return false;' . "\n\n";
$new_content .= '$content = ' . var_export(serialize($content),true) . ";\n";
$new_content .= "\n".'?>';
$file = $this->cach_dir_name. '/' . md5($name) . '.'.$this->extension;
if($ad = @fopen($file, 'w'))
{
@flock($ad, LOCK_EX);
@fwrite($ad, $new_content);
@flock($new_content, LOCK_UN);
@fclose($new_content);
}
?> } </code> </code>
بعد ان انتهينا من دالة الكتابة ،
نمر الان الى دالة الجلب والاستدعاء ،
وهي بسيطة ،
سوف تشتمل على متغير واحد ، وهو اسم الملف ،
ثم بعد ذلك سوف نتاكد من وجود الملف على مجلد الكاش ، قبل التضمين ، ان ثبت انه موجود ، فسوف نعمل انكلود للملف ، ثم تمرير المتغير $content على دالة unserialize عمل return له ـ،
وهذه هي الدالة ،
رمز PHP:
<code style="white-space:nowrap"> <code> <? function get_the_file($name)
{
$file = ($this->cach_dir_name).'/' . md5($name) . '.'.$this->extension;
if (file_exists($file))
{
include_once ($this->cach_dir_name.'/' . md5($name) . '.'.$this->extension);
if(!empty($content))
{
return unserialize($content);
}
else
{
return false;
}
}
else
{
return false;
}
} ?> </code> </code>
وهذا هو الناتج الكلي ، مع مثال لذلك ،
رمز PHP:
<code style="white-space:nowrap"> <code> <?
class cach_dzbatna_system
{
public $cach_dir_name;
public $extension;
function get_the_file($name)
{
$file = ($this->cach_dir_name).'/' . md5($name) . '.'.$this->extension;
if (file_exists($file))
{
include_once ($this->cach_dir_name.'/' . md5($name) . '.'.$this->extension);
if(!empty($content))
{
return unserialize($content);
}
else
{
return false;
}
}
else
{
return false;
}
}
function export($name,$content,$time=3600)
{
$new_content = '<?php'."\n\n\n";
$new_content .= '//FILE CACH GENERATED AUTOMATICALLY By Traidnt system cach ' . gmdate('d-m-Y h:i:s A ') . "\n\n";
$new_content .= '(!defined("SECURITY") ? exit("FILE NOT FOUND 404") : null);' . "\n\n";
$new_content .='if(time() > ' . (time() + $time) . ') return false;' . "\n\n";
$new_content .= '$content = ' . var_export(serialize($content),true) . ";\n";
$new_content .= "\n".'?>';
$file = $this->cach_dir_name. '/' . md5($name) . '.'.$this->extension;
if($ad = @fopen($file, 'w'))
{
@flock($ad, LOCK_EX);
@fwrite($ad, $new_content);
@flock($new_content, LOCK_UN);
@fclose($new_content);
}
}
}
$cach = new cach_dzbatna_system;
$cach->cach_dir_name = 'cache_dir';
$cach->extension = 'php';
define('SECURITY','Allow');
if(!($txt = $cach->get_the_file('jawad'))){
$cach->export('jawad','the_the_the');
}
else {
echo $txt;
}
?> </code> </code>
ان شاء الله يكون درس مفصل اليوم نال اعجببكم رغم بساطته ، سوف يكون دخولي بعد هذا الدرس مفصل متقطع ، نظرا للامتحانات ، ادعو لي بالتوفيق ولكل الامة الاسلامية ،
سلامي JawadSoft