استخدام PEAR للتخزين المؤقت لبرامج PHP
يعد التخزين المؤقت موضوعًا ساخنًا في عالم PHP، لأن الصفحات الديناميكية التي تم إنشاؤها بواسطة PHP تحتاج إلى إعادة حسابها في كل مرة يطلبها المستخدم، بغض النظر عما إذا كانت نتيجة الطلب هي نفسها، وفي الوقت نفسه، تقوم PHP بتجميع البرنامج النصي في كل مرة. من المؤكد أن مثل هذا الحمل الزائد سيكون لا يطاق بالنسبة لموقع ويب ذي حركة مرور عالية. لحسن الحظ، يمكن تخزين نتائج الويب مؤقتًا دون الحاجة إلى إعادة تشغيل البرنامج النصي وتجميعه. توفر المنتجات التجارية مثل ZendCache أو Alternate PHP Cache مفتوحة المصدر طريقة لتجميع نصوص PHP في كود بايت وتخزينها مؤقتًا.
توفر حزمة التخزين المؤقت الخاصة بـ PEAR إطارًا للتخزين المؤقت للمحتوى الديناميكي واستعلامات قاعدة البيانات واستدعاءات وظائف PHP.
تمامًا مثل لغة Perl التي تمتلك CPAN، وTeX التي تحتوي على CTAN، تمتلك PHP أيضًا مكتبة موارد مركزية خاصة بها لتخزين الفئات والمكتبات والوحدات النمطية. تسمى هذه المكتبة PEAR (امتداد PHP ومستودع الوظائف الإضافية).
تفترض هذه المقالة أنك قمت بتثبيت بيئة PEAR، وإذا لم يكن الأمر كذلك، فيمكنك تنزيلها من موقع PHP على الويب. تحتوي حزمة المخزن المؤقت لـ PEAR على فئة مخزن مؤقت شاملة والعديد من الفئات الفرعية المتخصصة. تستخدم فئات المخزن المؤقت فئات الحاوية لتخزين وإدارة البيانات المخزنة مؤقتًا.
فيما يلي الحاويات الموجودة حاليًا في المخزن المؤقت PEAR والمعلمات الخاصة بها:
ملف - تقوم حاوية الملف بتخزين البيانات المخزنة مؤقتًا في نظام الملفات وهي أسرع حاوية.
Cache_dir - هذا هو الدليل الذي تخزن فيه الحاوية الملفات.
filename_prefix — بادئة الملفات المخزنة مؤقتًا، على سبيل المثال: "cache_".
shm - تضع حاوية shm البيانات المخزنة مؤقتًا في الذاكرة المشتركة، وتظهر المعايير أنه مع التنفيذ الحالي، تكون هذه الحاوية أبطأ من حاوية الملف.
shm_key - المفتاح الذي تستخدمه الذاكرة المشتركة.
shm_perm - إذن لاستخدام شرائح بيانات الذاكرة المشتركة.
shm_size — حجم الذاكرة المشتركة المخصصة.
sem_key — القيمة الرئيسية للإشارة.
sem_perm — أذونات الإشارة.
db - طبقة تجريد قاعدة بيانات PEAR.
dsn — DSN الخاص باتصال قاعدة البيانات. يمكنك الرجوع إلى وثائق قاعدة بيانات PEAR.
Cache_table - اسم الجدول.
phplib - تستخدم حاوية phplib طبقة تجريد قاعدة البيانات لتخزين المخازن المؤقتة.
db_class
db_file
db_path
local_file
local_path
ext/dbx - امتداد طبقة تجريد قاعدة بيانات PHP إذا كنت تريد تخزين المخازن المؤقتة في قاعدة البيانات، يمكنك استخدام هذه الحاوية.
وحدة
يستضيف
ديسيبل
اسم المستخدم
كلمة المرور
Cache_table
مثابر
يعتمد تحسين الأداء الذي يتم الحصول عليه باستخدام PEAR Cache على حاوية المخزن المؤقت التي تختارها، على سبيل المثال، لا معنى لتخزين نتائج قاعدة البيانات مرة أخرى في ذاكرة التخزين المؤقت لقاعدة البيانات.
يمكن لوحدة المخزن المؤقت لوظيفة PEAR Cache تخزين نتائج أي وظيفة أو طريقة، سواء كانت وظيفة PHP المضمنة أو وظيفة معرفة من قبل المستخدم، فهي تستخدم حاوية ملف بشكل افتراضي وتضع البيانات المخزنة مؤقتًا في دليل يسمى function_cache.
يمكن أن يحتوي مُنشئ فئة Cache_Function على ثلاث معلمات اختيارية:
حاوية $: اسم حاوية المخزن المؤقت.
$container_options: معلمات الصفيف لحاوية المخزن المؤقت.
$expires: الوقت (بالثواني) الذي تنتهي فيه صلاحية كائن المخزن المؤقت.
عندما يستخدم استدعاء دالة عادية طريقة call() لفئة Cache_Function، يمكن تشغيل التخزين المؤقت. استدعاء call() أمر سهل، وسيطة واحدة هي اسم الوظيفة، ثم وسيطات الوظيفة، والوسيطة الثانية هي أول الوظائف التي سيتم استدعاؤها، وهكذا، دعونا نلقي نظرة على مثال:
مثال 1: استدعاء وظائف وأساليب المخزن المؤقت
// استدعاء المخزن المؤقت لوظيفة PEAR Cache.
require_once 'Cache/Function.php';
// تحديد بعض الفئات والوظائف.
فئة فو {
شريط الوظائف(اختبار $) {
صدى "foo::bar($test)
"؛
}
}
شريط الفئة {
وظيفة foobar($object) {
صدى '$'.$object.'->foobar('.$object.')
';
}
}
شريط $ = شريط جديد؛
وظيفة فوبار () {
صدى 'foobar()';
}
// احصل على كائن Cache_Function
$cache = new Cache_Function();
// قم بتخزين شريط الوظيفة الثابتة () للفئة foo (foo::bar()).
$cache->call('foo::bar', 'test');
// $bar->foobar()
$cache->call('bar->foobar', 'bar');
$cache->call('foobar');
?>
أدناه نستخدم Cache_Output لتخزين الإخراج مؤقتًا:
مثال 2: تخزين مؤقت لإخراج البرنامج النصي
// قم بتحميل المخزن المؤقت للإخراج لـ PEAR Cache
require_once 'Cache/Output.php'؛
$cache = new Cache_Output('file', array('cache_dir' => '.') );
// احسب علامة الصفحة المراد تخزينها مؤقتًا، ونفترض أن التخزين المؤقت للصفحة يعتمد على ذلك
// URL وHTTP GET وPOST المتغيرات وملفات تعريف الارتباط.
$cache_id = $cache->generateID(
المصفوفة('url' => $REQUEST_URI, '
post' => $HTTP_POST_VARS, 'ملفات تعريف الارتباط' => $HTTP_COOKIE_VARS) );
// المخزن المؤقت للاستعلام
إذا ($content = $cache->start($cache_id)) {
// ضرب المخزن المؤقت
صدى محتوى $؛
يموت();
}
// تم فقدان المخزن المؤقت
//--أدخل المحتوى هنا لإنشاء التعليمات البرمجية--
// قم بتخزين الصفحة في المخزن المؤقت
صدى $cache->end();
?>
باستخدام فئة Cache_Output، من السهل تحويل تطبيق موقع ويب ديناميكي يعتمد على قاعدة البيانات إلى تطبيق ثابت، وبالتالي تحسين أداء الموقع بشكل كبير. المزيد والمزيد من المواقع تستخدم GZIP لضغط محتوى HTML، مما يقلل من استهلاك النطاق الترددي للخادم ويمكن أن يفيد كثيرًا أيضًا المستخدمين الذين يستخدمون المودم للوصول إلى الإنترنت.
يعمل Cache_OutputCompression على توسيع وظائف فئة Cache_Output، حيث يقوم بتخزين محتوى HTML المضغوط بـ GZIP، وبالتالي توفير وقت ضغط وحدة المعالجة المركزية.