ما هو OPcache؟
يحتاج كلّ طلب Request في PHP إلى أن يُحلَّل Parsed، يُترجَم Compiled ثمّ يُنفَّذ Executed؛ لكن في حالات عديدة تؤدّي الطّلبات دائمًا إلى نفس النّتائج، وهو ما يعني أن الخادوم يكرّر في كلّ مرة الخطوات الثّلاث المذكورة دون حاجة لذلك. هنا يأتي دور أدوات التّخزين المؤقَّت للشّيفرة العمليّة Opcode (اختصار ل Operation code، وهو ناتج التّحليل ثمّ التّرجمة أي الصّيغة الّتي يُنفَّذ بها الطّلب)، ومن بينها OPcache.
يتلخَّص عمل OPcache في الاحتفاظ بالشيفرة العمليّة في ذاكرة الوصول العشوائي RAM وتنفيذها - عند إعادة الطّلب - من الذّاكرة مباشرةً دون الحاجة للمرور بخطوتَيْ التّحليل والتّرجمة؛ وهو ما يعني اختصار الخطوات والتّقليل من حِمل العمل، غير الضّروريّ، على الخادوم.
نفترض في هذا الدّرس وجود حزم LAMP مثبَّتة ومضبوطة على خادومك.
تفعيل OPcache
تأتي أداة OPcache مضمَّنةً في الإصدار 5.5 من PHP.
الأمر التّالي يُظهر إصدار PHP
المستخدَم:
php -v
عندي مثلًا:
PHP 5.5.9-1ubuntu4.9 (cli) (built: Apr 17 2015 11:44:57) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
لاحظ السّطر الأخير:
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
يخبرنا هذا السّطر أن OPache
مُثبَّت؛ وأنّ الإصدار المستخدَم هو 7.0.3
.
إذا اتّبعت خطوات كيف تُثبِّت وتؤمِّن phpMyAdmin على Ubuntu 14.04 فستجد أنّ OPcache مُفعَّل. للتّأكّد ننشئ ملفّ info.php
(راجِع الدّرس السّابق) ثمّ ندخل إلى العنوان
http://domain_or_ip/info.php
حيث domain_or_ip
نطاق أو عنوان IP الخادوم. في صفحة معلومات الخادوم نبحث عن بعض التّفاصيل.
يُمكن ملاحظة أنّ ملفّ إعداد خادوم الويب المستخدَم هو etc/php5/apache2/php.ini/
وأنّ خادوم الويب يبحث عن ملفّات إعداد إضافيّة في المجلَّد etc/php5/apache2/conf.d/
؛ تظهر ملفّات الإعداد الموجودة في هذا المجلّد ضمن خانة Additional .ini files parsed، ومن بينها الملفّ etc/php5/apache2/conf.d/05-opcache.ini/
. يتحكّم هذا الملفّ في إعداد OPcache كما سنرى.
إذا نزلنا أسفل الصّفحة فسنجد فقرات خاصّة ب OPcache:
ما يهمّنا الآن من هذه الفقرة هو السّطر الأوّل:
Opcode Caching Up and Running
أي أنّ التّخزين المؤقَّت مُفعَّل ويعمل.
إعداد OPcache
توجد خيّارات عديدة لضبط آليّة عمل OPcache. سنتعرّض في هذه الفقرة لأهمّها. يقدّم توثيق PHP قائمة بجميع الخيّارات الموجودة.
1- حجم ذاكرة التّخزين المؤقّت
تُحدّد تعليمة opcache.memory_consumption
حجم الذّاكرة المخصَّصة لاستخدام OPcache، حيثُ تُخزّن الشيفرة العمليّة لسكربتات PHP. تُضاف هذه التّعليمة إلى ملفّ إعداد OPcache الموجد على المسار etc/php5/apache2/conf.d/05-opcache.ini/
. نفتح الملفّ للتّحرير:
sudo nano /etc/php5/apache2/conf.d/05-opcache.ini
محتوى الملفّ:
; configuration for php ZendOpcache module ; priority=05 zend_extension=opcache.so
ملحوظة: لتعطيل OPcache أضف علامة ;
أما سطر zend_extension=opcache.so
؛ ثمّ أعد تشغيل خادوم ويب Apache. ستلاحظ أنّ صفحة المعلومات لم تعد تظهر البيانات المتعلّقة ب Zend OPcache.
نُضيف تعليمة opcache.memory_consumption
ونحدّد قيمتها، علمًا أنّ القيمة الافتراضيّة هي 64MB. مثلًا، التّعليمة التّاليّة تحدّد حجم ذاكرة التّخزين المؤقّت ب128 ميغا بايت:
opcache.memory_consumption=128
ينصح التّوثيق الرّسمي لOPcache بإعطاء قيمة 128 لهذه التّعليمة، إلّا أنّ الأمر يعتمد على قدرات خادومك ونوعيّة وعدد التّطبيقات والخدمات العاملة عليه.
2- الحدّ الأقصى لعدد الملفّات المُخزّنة
تُتيح تعليمة opcache.max_accelerated_file
تحديد عدد أقصى للملفّات المحتفظ بها في ذاكرة التّخزين المؤقَّت. القيمة المنصوح بها هي 4000
:
opcache.max_accelerated_files=4000
3- المدّة اللّازمة للتّحقّق من وجود تغيير على برنامج مُخزَّن في الذّاكرة
تُحدّد تعليمة opcache.revalidate_freq
مدّة زمنيّة (بالثّانيّة) يُتحقّق بعد انقضائها من وجود تغييرات على الملفّ المخزّن في ذاكرة الوصول العشوائيّ؛ إذا كان الاختبار إيجابيًّا، أي حدث تغيير، فإنّ الملفّ يُعاد تحليله وترجمته قبل أن يُخزّن من جديد. يُنصَح بقيمة 60
لهذه التّعليمة:
opcache.revalidate_freq=60
ملحوظة: إضافة علامة ;
في بداية سطر يعني تجاهلَه. في هذه الحالة، إذا كان السّطر يحوي تعليمة فلن تؤخَذ في الحسبان.
يظهر الملفّ الآن بالمحتوى التّالي:
; configuration for php ZendOpcache module ; priority=05 zend_extension=opcache.so opcache.memory_consumption=128 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60
لم يتبقّ إلا إعادة تشغيل خادوم الويب لتفعيل الخيّارات:
sudo service apache2 restart
ملحوظة: يمكن التّأكّد من عبر صفحة info.php
حيث تظهر قيمة الخيّارات أعلاه في خانات بنفس أسماء الخيّارات.
خاتمة
يُساعد استخدام أداة OPcache في تحسين أداء الخادوم بشكل ملحوظ والاستفادة القصوى من موارد الجهاز. حاول - بحذر - تجربة إعدادات مختلفة وتفحّص تأثيراتها على الأداء حتى تجد الإعداد الأكثر مناسبةً لبيئة عملك. إذا أردت مواصلة التّحسين فدرس كيفيّة تثبيت وإعداد الذّاكرة المُخبّئة (Memcache) على Ubuntu خطوة جيّدة في هذا المجال.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.