بسم الله الرحمن الرحيم
فكرة درسنا اليوم هي عندما تحتاج الى استعلامات كثيرة خصوصا في الصفحة الرئيسة من برنامجك فلا مجال من عدم استخدام الكاش
وهذا ينقسم الى قسمين
كاش الملفات
كاش قواعد البيانات
وكاش قواعد البيانات ينقسم الى قسمين
كاش في اوامر الاستعلام
كاش بيانات يتم تخزينها في جدول خاص لهذا الأمر
والمقال سيتكلم عن القسم الأخير وهو تخزين معلومات في جدول الكاش
سأبدأ بوضع تصور عام لبرنامج يتم تطبيق عليه نظام كاش قواعد البيانات
البرنامج او السكريبت او تطبيق ويب سميه كيفما تشاء , سيتكون من اخبار و دليل مواقع و اي شيئ اخر المهم انك تحتاج لعرض اخر ما تم اضافته في الجداول الموجودة عندك
وانا سأركز على اخر ما تم اضافته في الأخبار ودليل المواقع
قبل ان نستخدم الكاش تصور انه عند طلب اخر ما تم اضافته كم من استعلام ستحتاج ؟ لنفرض ان لديك خمسة جداول واضرب الخمس استعلامات في عدد الزوار ؟ اذا سيزداد الضغط على القاعدة بكل تأكيد
وبهذا اتت فكرة الكاش للتقليل من عدد الاستعلامات وأنا سأوضح فكرة بسيطة ولكنها مفيدة جدا
نعلم جميع ان لكل تطبيق ويب جدول خاص لحفظ اسم الموقع ورابطه وبريده لاستخدامه عن عرض الصفحات
اذا جدول site سيحتوي على الحقول التالية
name اسم الموقع
email بريد الموقع
news اخر خمسة اخبار
links اخر خمسة مواقع
ويكون الجدول كالتالي
كود PHP:
CREATE TABLE `site` (
`name` VARCHAR( 255 ) NOT NULL ,
`email` VARCHAR( 255 ) NOT NULL ,
`news` TEXT NOT NULL ,
`links` TEXT NOT NULL
) ENGINE = MYISAM ;
في صفحة اضافة او تعديل او حذف الأخبار سيتم جلب اخر خمسة اخبار من جدول الأخبار وحفظ النتيجة في مصفوفة وادخالها الى جدول site في حقل news
سأشرح بالتفصيل هذا الأمر
لنفرض اننا في صفحة اضافة الخبر وانا لن اشرح كيفية اضافة بيانات الى القاعدة لانك اذا وصلت الى مرحلة الكاش فاعتقد انك تعرف هذا
عندما يتحقق شرط الاضافة اي ان البيانات حفظت بنجاح في القاعدة فانك تقوم بجلب اخر الأخبار ووضعها في مصفوفة
كود PHP:
$sql=mysql_query("select * from news order by id DESC limit 5");
$data=array();// انشاء متغير سيخزن البيانات في مصفوفة
// يتم استخدام حلقة التكرار لتخزين البيانات
while($data[]=mysql_fetch_array($sql));
وبعد التخزين في المصفوفة الأن ستم تخزين المصفوفة في دالة serialize()
كود PHP:
$data=serialize($data);
والأن سيتم تحديث جدول site خصوصا حقل news لحفظ مصفوفة البيانات
كود PHP:
mysql_update(" update site set news='$data'");
وهذا هوا الكود بالكامل
كود PHP:
// فرضا ان هناك جدول اخبار بهذا الاسم
//add_news.php
$sql=mysql_query("select * from news order by id DESC limit 5");
$data=array();// انشاء متغير سيخزن البيانات في مصفوفة
// يتم استخدام حلقة التكرار لتخزين البيانات
while($data[]=mysql_fetch_array($sql));
$data=serialize($data);
mysql_update(" update site set news='$data'");
لو تلاحظون انني لم استخدم الشروط للتأكد من البانات والتأكد من تعديل جدول site
تركت هذا لكم وانا ركزت فقط على شرح طريقة الكاش
ايضا كلمة كاش هي انجليزية ونحن نفهم منها انها للملفات او البيانات المؤقتة
والأن لنرجع الى صفحة برنامجنا الرئيسية ونقوم باستخراج البيانات المؤقتة من جدول site
كود PHP:
// index.php
$sql=mysql_query(" select * from site");
$result=mysql_fetch_array($sql);
$news=unserialize($result['news']);// نقوم بفك دالة serialize
حاليا البيانات موجودة في مصفوفة وطريقة استعراض المصفوفة معروفة للجميع
كود PHP:
// index.php
$sql=mysql_query(" select news from site limit 1");
$result=mysql_fetch_array($sql);
$news=unserialize($result['news']);// نقوم بفك دالة serialize
foreach( $news as $d ){
print $d['title'];
print $d['text'];
}
title و text هما حقول في جدول news وهذا فقط مثال للتوضيح
ويتم تطبيق نفس الطريقة على جميع الجداول الأخرى
كل جدول تريد تخزين بعض من بياناته في الكاش يجب عليك اضافة حقل في جدول site باسم الجدول وتطبيق عليه ما ذكرته في الأعلى وانصحكم ببرمجة دالة لجلب وتخزين بيانات الجدوال في جدول الكاش عند كل اضافة او حذف او تعديل كما ذكرت انفا
بعد تطبيق هذا الدرس ستلاحظون خفة التطبيق الذي تعملون عليه
هذا فان اخطأت فمن نفسي والشيطان وان اصبت فمن الله عز وجل
واستغفر الله العظيم