أساسيات PHP Caching

تحذير: هذا المنشور قديم وقد لا يعكس حالة الفن الحالية

PHP سريع جدًا ، ومع إصدار PHP 7 يكون أسرع بشكل كبير ، وأحيانًا يكون متوسطه أسرع مرتين من PHP 5.5. أحيانًا يكون HHVM أسرع. ومع ذلك ، فإن التخزين المؤقت ضروري لسرعة تطبيق PHP.

OPCache

OPCache هي آلية تخزين مؤقت خاصة تخزن الإصدارات المترجمة مسبقًا من ملفات PHP. عند التنفيذ ، يتم تجميع ملف PHP إلى رمز بايت وبمجرد الانتهاء من هذه العملية ، يتم تنفيذ الرمز الثانوي.

99.9٪ من المرات التي تكون فيها أكواد التشغيل هي نفسها لعدة أيام ، حيث قد لا يتغير الملف لعدة أشهر ، ولا يزال PHP يعيد تجميعه افتراضيًا في كل مرة.

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

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

وثائق OPCache

APCu

APCu هو APC القديم بدون ذاكرة التخزين المؤقت لرمز التشغيل ، والذي تم إنشاؤه الآن رسميًا بواسطة OPCache. إنها ذاكرة تخزين مؤقت للمستخدم ، مما يعني أنه يجب استخدامها بشكل صريح بواسطة كود PHP الخاص بك للاستفادة منها ، بينما يقوم OPCache بكل العمل بعد التثبيت مباشرة.

عند إجراء عملية مكلفة ، مثل قراءة ملف أو جلب مورد شبكة ، يمكنك تخزين النتيجة في ذاكرة التخزين المؤقت للمستخدم لتسريع طلب لاحق لنفس الكائن.

الجانب السلبي الوحيد لـ APCu هو أنه محلي للجهاز الذي يعمل عليه ، ومحلي لعملية PHP ونظامها. هذا يعني أنك إذا استخدمت PHP كعملية FastCGI (مثل Nginx و php-fpm) ، فإن كل عملية PHP سيكون لها ذاكرة التخزين المؤقت الخاصة بها.

ما لم تتوقع تشغيل التطبيق الخاص بك على خوادم أو عمليات متعددة ، فسيكون هذا جيدًا. خلاف ذلك ، يمكن أن يكون Memcached و Redis حلاً جيدًا.

باستخدام APCu

<?php
function getData() {
    $data = apc_fetch('some_data');
    if ($data === false) {
        $data = $this->getSomeData();
        apc_add('some_data', $data);
    }
    return $data;
}
?>

وثائق APCu

APC و XCache و Memcached و Redis وغيرها

نظرًا لأن OPcache مدمج الآن ، وذاكرة التخزين المؤقت لقيمة المفتاح أصبحت الآن جزءًا من APCu ، لم تعد APC ذات صلة. لم يعد XCache مستحسنًا ، استخدم APCu بدلاً من ذلك. يمكن أن يكون Memcached و Redis بديلاً لـ APCu ، فقط أقل ملاءمة على نظام مستقل حيث يجب إعدادهما بشكل منفصل ولا يوفران أي ميزة حقيقية على APCu ، ولكن مناسبًا إذا قمت بتشغيل عمليات PHP متعددة أو إعداد شبكة من الأنظمة حيث يمكنهم جميعًا الاعتماد في موقع مركزي لذاكرة التخزين المؤقت.