التحديثات الجديدة للمجلة السهلة 1: تخفيض استعلامات قواعد البيانات بنسبة 50-85%

  بواسطة: khr2003   tags الإضافة: شباط الأربعاء 02-02-2011

بعد أن انتهيت من برنامج تحليل الأصدقاء الذي برمجته للفيسبوك، عدت إلى المجلة السهلة لأٌقوم بتحديثها وتعديل الأخطاء التي وجدت بها وإضافة بعض المميزات الجديدة التي كانت موجودة في ذهني وعلى الورق ولكن لم تطبق بسبب ضيق الوقت والاهتمامات الأخرى لدي.

وعلى العموم فقد قمت بتصليح بعض الأخطاء في المجلة وإضافة ثلاثة مميزات جديدة ومهمة، وهي إضافة نظام الكاش عند الاستعلام من قواعد البيانات، إمكانية إضافة كود php في قوالب الثيم وأخيراً تحديث نظام التحديث في المجلة.

سوف اتحدث عن الميزة الأولى في هذه التدوينة ومن ثم اتحدث عن الأخريات في تدوينات لاحقة إن شاء الله.
نظام Cache أو كما يعرف بالعربية "الخابية" يقوم بتسهيل عملية استرجاع المعلومات من قواعد البيانات، أو بمعنى أدق يقوم بحفظ نتائج الاستعلامات المتكررة في مكان معين لكي يتم استرجاع المعلومات في مرة قادمة إذا كانت نتائج الاستعلام هي نفسها من دون أي تغيير. وفي المجلة السهلة أضفت ميزة حفظ نتائج الاستعلامات في ملفات تكون داخل مجلد cache (لن تجد المجلد في المجلة في أول تنصيب حيث تقوم المجلة بإنشاءه في حال لم يكن موجوداً أثناء القيام بالاستعلام).

ففي المجلة السهلة عدة استعلامات تكون ثابتة معظم الاحيان ولا تتغير كمثل اعدادات المجلة، اعدادات الموديلات، قوالب الموديلات وقوالب المجلة وغيرها. فهذه الاعدادات لا يتم تغييرها بشكل دوري وإنما يتم التعديل عليها مرة واحدة بين فترة واخرى. ولذلك فحالما تقوم بتغيير الاعدادات أو القوالب يتم إنشاء ملف خاص لكل واحد منهم ويتم وضعه في مجلد cache. وفي حالة تم طلب الاستعلام الخاص بالاعدادات مثلاً؛ سوف تتأكد المجلد من أن هناك ملفاً يتضمن نتائج ذلك الاستعلام فإذا كان موجوداً يتم اخذ المعلومات منه، وإنم لم يكن الملف متوافراً يتم الاستعلام بشكل عادي من قواعد البيانات واسترجاع النتائج.

ما يميز نظام الكاش هو أنه لا يوجد للملفات التي تخزن فيها المعلومات فترة انتهاء. حيث تبقى الملفات كما هي دون حذف. إذا ماذا سيحصل لو قمت بتغيير جديد على الاعدادات أو على القوالب؟ في هذه الحالة سوف تقوم المجلة بتحديث ملفات الكاش فقط عندما يحصل تغيير معين على الاعدادات أو القوالب من لوحة التحكم.

هذه الميزة هي مفيدة جداً حيث تقوم بتقليل الضغط على السيرفر من ناحية الاستعلامات، وقد تم تقليص عدد الاستعلامات في المجلة السهلة لتصل في بعض الصفحات إلى استعلام واحد فقط. وطبعاً عدد الاستعلامات سيختلف من صفحة لاخرى حسب الموديل أو الإضافات التي أضيفت للمجلة. وبالمجمل فقد تم تقليص الاستعلامات ما بين 70-90%. انظر الشكل في الاسفل.




وفي حالة قام احد بتطوير موديل أو إضافة أو بلوك يتضمن استعلامات كثيرة، يمكن استعمال نظام الكاش هذا لكي يتم تقليص الاستعلامات. واستعمال النظام أمر يسير ويتظمن ثلاثة دوال، الأولى لإنشاء الملف، والثانية للتأكد من وجوده والثالثة لأخذ المعلومات الموجودة فيه. فعلى سبيل المثال لو أردنا تطبيق النظام على هذا الاستعلام:

$result = $diy_db->query("SELECT variable,value FROM diy_settings");



نضع هذا الكود في المكان الذي يتم فيه إضافة معلومات جديدة إلى الجدول:

// نأخذ نتائج الاستعلام
while ($row = $diy_db->dbarray($query_result)) {
$key = $row['variable'];
$array[$key] = $row['value'];
}

// نصدر نتائج الاستعلام إلى ملف
$diy_db->create_query_cache_file('global_settings', $array);


نلاحظ أن الدالة create_query_cache_file تأخذ متغيرين، الأول هو اسم الملف الذي سوف يتم إنشاءه والثاني هو المعلومات التي نريد وضعها فيه.

وعندما نريد استخراج المعلومات نضع هذا الكود:
// التأكد من أن الملف موجود
$cahce = $diy_db->check_query_cache_file('global_settings');
if ($cahce) {
// إذا كان الملف موجوداً قم بأخذ معلوماته ووضعها في متغير
$array = $diy_db->get_query_cache_file('global_settings');
} else {
// إذا لم يكن موجوداً قم بالاستعلام بشكل اعتيادي
$result = $diy_db->query("SELECT variable,value FROM diy_settings");

while ($row = $diy_db->dbarray($result, $i++)) {
$key = $row['variable'];
$array[$key] = $row['value'];
}
}
// يمكننا استعمال $array للقيام بأي عمليات نريدها


ونلاحظ في الكود السابق دالتان الأولى check_query_cache_file و get_query_cache_fil. الأولى فتقوم بالتأكد من الملف موجود، أما الثانية فتقوم بأخذ معلومات الموجودة في الملف في حال كان موجوداً. والدالتين يأخذان متغير واحد وهو اسم الملف الذي تم انشاؤه باستخدام الدالة create_query_cache_file.

ملاحظة: لكي يتم الحصول على آخر التحديثات قم بتحميل المجلة ومن ثم استبدل الملفات الجديدة بالقديمة في موقعك (طبعاً بعد أخذ نسخة احتياطية) ما عدا ملف conf.php.

أتمنى أن تكون هذه التدوينة مفيدة، وإن شاء الله سوف أقوم بشرح الميزات الأخرى في التدوينة القادمة إن شاء الله.


الأوسمة: تحديثات-المجلة، قواعد-البيانات، -الكاش أقرأ المزيد