كيفية تمكين وتكوين امتداد PHP Opcache في ServBay
يُعد ServBay بيئة تطوير ويب محلية قوية صُممت خصيصًا للمطورين، حيث تضم العديد من التقنيات الداعمة بما في ذلك PHP. ولمساعدة المطورين على تحسين أداء تطبيقات PHP، يأتي ServBay مع امتداد Opcache مثبتًا مسبقًا لكل إصدارات PHP المدعومة. في هذا المقال سنستعرض بالتفصيل كيفية تفعيل وتعديل إعدادات Opcache ضمن ServBay، وأثر ذلك في تسريع تطوير واختبار تطبيقات PHP محليًا.
مقدمة عن امتداد Opcache
Opcache هو امتداد رسمي من PHP يُستخدم لتعزيز أداء تنفيذ كود PHP. تكمن فكرته الأساسية في تخزين تعليمات بايت كود الـPHP المترجمة مسبقًا في الذاكرة المشتركة، بحيث يمكن للنظام استخدام النسخة المؤقتة من الشيفرة البرمجية مباشرة عند كل طلب دون الحاجة لإعادة التحليل والترجمة، ما يقلل بشكل كبير من استخدام المعالج والذاكرة ويزيد من سرعة الاستجابة.
لماذا يُعد Opcache مهمًا للمطورين؟
- تسريع التطوير والاختبار: تمكين Opcache على بيئة التطوير المحلية سيجعل التطبيق يعمل بشكل أسرع، ويقلل وقت تحميل الصفحات، ويزيد من إنتاجيتك كمطور.
- محاكاة بيئة الإنتاج: حيث أن معظم بيئات الإنتاج تعتمد على Opcache لتعزيز الأداء، فإن تفعيله محليًا يمنح تجربة أكثر واقعية لطريقة تشغيل التطبيق بعد النشر.
- تخفيف استهلاك الموارد: خاصة عند العمل على أطر عمل ضخمة أو تطبيقات معقدة، فإن مذكرة Opcache تقلل من استهلاك موارد الجهاز المحلي بشكل ملحوظ.
أبرز ميزات Opcache
- تخزين تعليمات بايت كود: الميزة الأساسية هي تخزين الشيفرة المترجمة لضمان تنفيذ أسرع.
- ذاكرة مشتركة: تُخزن البيانات في الذاكرة المشتركة كي يتمكن جميع عمليات PHP من الوصول إليها.
- إبطال تلقائي: يمكن ضبط Opcache للتحقق تلقائيًا من تحديثات الملفات وضمان مواكبة التغييرات في الكود.
- إعدادات مرنة: يوفر مجموعة واسعة من الخيارات التي يمكن تعديلها بما يناسب احتياج المشروع.
- دعم مباشر: باعتباره امتدادًا رسميًا من PHP فهو مدمج ومتكامل مع نواة PHP.
دعم ServBay لـ Opcache
جميع إصدارات PHP المدمجة مع ServBay (مثل PHP 7.4، 8.0، 8.1، 8.2، 8.3، 8.4 وغيرها) تحتوي مسبقًا على امتداد Opcache. لن تحتاج إلى تحميل أو تجميع الامتداد يدويًا، فقط يمكنك التفعيل والتعديل عبر واجهة ServBay الرسومية أو تحرير ملف الإعدادات الخاص.
كيف يمكنك تفعيل امتداد Opcache
هناك طريقتان رئيسيتان لتمكين Opcache في ServBay: عبر واجهة المستخدم الرسومية (GUI)، أو يدويًا من خلال تحرير ملف الإعدادات.
الطريقة الأولى: التفعيل من خلال واجهة ServBay (موصى بها)
هذه الطريقة الأسرع والأسهل.
- افتح تطبيق ServBay.
- من قائمة التنقل الجانبية، اضغط على اللغات (Languages).
- اختر إصدار PHP الذي تريد تفعيل Opcache له، على سبيل المثال PHP 8.3.
- من ناحية التفاصيل لإصدار PHP المحدد، اذهب إلى تبويب الامتدادات (Extensions).
- ابحث عن الامتداد OPcache ضمن القائمة.
- فعّل المفتاح الموجود بجانب OPcache.
- اضغط على زر حفظ (Save) في أسفل الصفحة.
- سيعرض لك ServBay رسالة تفيد بضرورة إعادة تشغيل حزمة PHP لتطبيق التغييرات. اضغط على إعادة التشغيل (Restart).
بعد إعادة التشغيل سيتم تفعيل امتداد Opcache فورًا.
الطريقة الثانية: تحرير ملف الإعدادات يدويًا
إن كنت تريد ضبط إعدادات متقدمة أو تفضل التعامل مع الملفات مباشرة، يمكنك تحرير ملف الإعداد .ini
الخاص بـ Opcache يدويًا.
- تحديد موقع ملف الإعداد: ملف إعداد Opcache يوجد ضمن مجلد
conf.d
الخاص بإصدار PHP المستخدم. هذا المجلد يحتوي على ملفات إعداد جميع الامتدادات.- على سبيل المثال، لإصدار PHP 8.3 يكون المسار غالبًا:
/Applications/ServBay/etc/php/8.3/conf.d/opcache.ini
1 - عدّل رقم الإصدار حسب إصدار PHP الذي تعمل عليه.
- على سبيل المثال، لإصدار PHP 8.3 يكون المسار غالبًا:
- تعديل ملف الإعداد: افتح ملف
opcache.ini
في برنامج تحرير النصوص المفضل لديك.- غالبًا يكون الملف مُجهزًا بإعدادات Opcache الأساسية ولكنها مُعلّقة بعلامة (😉 في أول السطر.
- ابحث عن القسم
[Zend Opcache]
. - قم بإلغاء التعليق عن السطر
zend_extension = opcache.so
(أي احذف الـ;
من بدايته) حتى يتم تحميل الامتداد. - يمكنك كذلك إضافة أو تعديل إعدادات Opcache حسب الحاجة. نموذج إعداد نموذجي (شرح معاني الإعدادات في القسم التالي):ini
[Zend Opcache] ; Ensure the extension is loaded zend_extension = opcache.so ; Basic Configuration (example values) opcache.enable = 1 ; تفعيل Opcache بشكل عام (1=مفعل، 0=معطل) opcache.memory_consumption = 128 ; الذاكرة المخصصة لتخزين التعليمات البرمجية (بالميجابايت) opcache.interned_strings_buffer = 8; ذاكرة مخصصة لتخزين النصوص الداخلية (بالميجابايت) opcache.max_accelerated_files = 4000 ; أقصى عدد من الملفات التي يمكن تخزينها opcache.revalidate_freq = 60 ; عدد الثواني بين كل فحص لتحديثات الملفات. 0 = فحص عند كل طلب (أبطأ، لكن ممتاز للتطوير) opcache.fast_shutdown = 1 ; تفعيل الإغلاق السريع opcache.enable_cli = 1 ; تفعيل Opcache لأوامر سطر الأوامر
1
2
3
4
5
6
7
8
9
10
11
12 - احفظ التعديلات في ملف
opcache.ini
.
- إعادة تشغيل حزمة PHP: من تطبيق ServBay، انتقل إلى حزمة PHP (من قائمة الحزم (Packages))، ثم اضغط على زر إعادة التشغيل.
بعد حفظ التعديلات وإعادة تشغيل PHP، سيتم تفعيل Opcache والتعديلات الجديدة فورًا.
التحقق من تحميل امتداد Opcache بنجاح
أدق طريقة للتحقق من تفعيل Opcache هي عبر استعراض معلومات PHP (phpinfo()
).
- أنشئ ملف
phpinfo.php
: في مجلد جذر موقعك على ServBay، أنشئ ملف PHP باسمphpinfo.php
. افتراضيًا مسار جذر المواقع في ServBay هو/Applications/ServBay/www/
. يمكنك مثلًا إنشاء مجلد فرعي مثل/Applications/ServBay/www/servbay.demo/
ووضع الملف بداخله. محتوى الملف:php<?php phpinfo(); ?>
1
2
3 - افتح الملف عبر المتصفح: تأكد من تشغيل خادم الويب (Caddy أو Nginx) وأن الإعدادات تشير إلى مجلد موقعك. افتح عنوان الـ URL المناسب في متصفحك.
- إذا وضعت الملف في
/Applications/ServBay/www/servbay.demo/
وخصصت نطاقًا مثلservbay.demo
من داخل ServBay، يمكن الدخول عبرhttp://servbay.demo/phpinfo.php
. - إذا كان الملف في المسار الافتراضي
/Applications/ServBay/www/
، استخدمhttp://localhost/phpinfo.php
أو أي عنوان محلي توفره ServBay.
- إذا وضعت الملف في
- ابحث عن بيانات Opcache: في صفحة
phpinfo()
ابحث في الأسفل أو استخدم خاصية البحث (Ctrl+F أو Cmd+F) وأدخل كلمة "Opcache".- إذا كان الامتداد مفعلًا ستجد قسمًا خاصًا باسم Zend Opcache يحتوي على بيانات الإصدار والحالة والإعدادات الحالية.
- إن لم تجد هذا القسم، راجع خطوات التفعيل وإعدادات الملفات للتأكد من صحة العملية.
توضيح: حدد قسم Zend Opcache في صفحة phpinfo
شرح إعدادات Opcache بالتفصيل
يقدم Opcache العديد من الإعدادات التي يمكنك تعديلها في ملف opcache.ini
طبقًا لاحتياجاتك. فيما يلي أهم الإعدادات مع شرح مبسط لفائدتها:
ini
[Zend Opcache]
; التأكد من تحميل الامتداد
zend_extension = opcache.so
; تفعيل Opcache، 0 = معطل، 1 = مفعل. التغيير عبر الواجهة الرسومية يضبط هذا الخيار.
opcache.enable = 1
; حجم الذاكرة المشتركة المخصصة لتخزين تعليمات بايت كود PHP (بـ ميجابايت).
; غيّر القيمة بناءً على حجم المشروع وذاكرة الجهاز. المشاريع الكبيرة تحتاج قيمة أكبر.
opcache.memory_consumption = 128
; حجم الذاكرة المخصصة للنصوص الداخلية (أسماء أصناف أو دوال إلخ) (بـ ميجابايت).
; أطر العمل التي تستخدم نصوصًا كثيرة مثل Symfony قد تستفيد من قيمة أعلى.
opcache.interned_strings_buffer = 8
; أقصى عدد من ملفات PHP التي يمكن تخزينها في Opcache.
; إذا كان عدد ملفات مشروعك أكبر من هذه القيمة لن تُخزّن كل الملفات. ضع قيمه أكبر من مجموع ملفات المشروع.
opcache.max_accelerated_files = 10000
; عدد الثواني بين كل فحص للتحقق من تحديث الملفات.
; في بيئة الإنتاج غالبًا يتم وضع قيمة كبيرة (٣٠٠ أو ٦٠٠)، أو 0 (أي لا يتم الفحص ويتطلب مسح الكاش يدويًا).
; **في بيئة التطوير المحلية، ضع قيمة صغيرة مثل 1 أو 2 لجعل الكود الجديد يظهر فورًا بعد الحفظ.** إذا حددت القيمة 0 سيتم الفحص عند كل طلب، ما قد يقلل الأداء لكنه مفيد في التطوير.
opcache.revalidate_freq = 2
; تفعيل الإغلاق السريع، وهذا يساعد في تحرير الذاكرة بسرعة أكبر مع نهاية كل طلب. غالبًا ما ينصح بتمكينه.
opcache.fast_shutdown = 1
; تفعيل استخدام Opcache مع سطر أوامر PHP (CLI).
; مفيد لأوامر Composer أو الاختبارات أو أي أدوات تعمل من الطرفية. ينصح بتمكينه غالبًا.
opcache.enable_cli = 1
; هل يُسمح بتحرير الذاكرة المشتركة الغير مستخدمة تلقائيًا؟ قد يساعد أحيانًا في إدارة الذاكرة لكنه قد يؤثر ضئيلًا على الأداء. اتركه افتراضيًا.
; opcache.enable_file_override = 0
; هل يتم تجاهل التعليقات عند تخزين المسارات؟ يوفر بعض الذاكرة لكن قد يؤثر على بعض الأدوات التي تعتمد على التعليقات.
; opcache.save_comments = 1
; هل يحتفظ بتعليقات التوثيق (Docblocks) أثناء التخزين؟ ضروري لبعض الأدوات مثل PHPUnit أو Doctrine؛ يُنصح بتفعيله.
; opcache.load_comments = 1
; مستوى تحسين الكود. كلما زاد الرقم زادت عمليات التحسين (وقد يطول زمن التهيئة). الوضع الافتراضي مناسب غالبًا.
; opcache.optimization_level = 0x7FFFBBFF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
انتبه بعد أي تعديل في ملف opcache.ini
إلى ضرورة إعادة تشغيل حزمة PHP حتى تصبح التغييرات نافذة.
الأسئلة المتكررة (FAQ)
- س: هل Opcache مفعل افتراضيًا في ServBay؟
ج: الامتداد مثبت مسبقًا لكن غالبًا غير مفعل بشكل افتراضي، لذا عليك تفعيله يدويًا كما شرحنا بالأعلى. - س: هل تفعيل Opcache يؤثر على سير عمل التطوير؟
ج: تفعيل Opcache يسرع تنفيذ الكود كثيرًا. أثناء التطوير ينصح بأن تضع قيمة منخفضة لـopcache.revalidate_freq
(مثل 1 أو 2) أو 0 كي يتم عكس التعديلات بسرعة. أما عند النشر فيُفضل تعيين قيمة كبيرة أو 0 مع استخدام سياسة مسح الكاش يدويًا. - س: هل يقوم Opcache بتخزين سكريبتات PHP التي تعمل من سطر الأوامر؟
ج: لا يتم ذلك افتراضيًا. يجب ضبط الإعدادopcache.enable_cli
إلى1
لتفعيل حفظ الكاش لأوامر CLI مثل Composer واختبارات الوحدة وغيرها، ما يسرع تنفيذها. - س: كم الذاكرة التي ينبغي تخصيصها لـ Opcache؟
ج: قيمةopcache.memory_consumption
تعتمد على حجم ودرجة تعقيد مشروعك. غالبية مشاريع التطوير المحلية يكفيها 128 أو 256 ميجابايت. أما المشاريع الكبيرة جدًا أو إذا ظهرت رسائل امتلاء الكاش فيphpinfo()
يفضل رفع القيمة تدريجيًا. - س: ماذا أفعل بعد تعديل ملف
opcache.ini
؟
ج: لابد من إعادة تشغيل حزمة PHP عبر ServBay كي تسري التغييرات.
خلاصة
يعتبر امتداد Opcache أداة فعالة وسهلة الاستخدام لتحسين أداء PHP بشكل ملحوظ. يتيح ServBay للمطورين تفعيله وإدارته بسهولة سواء عبر الواجهة الرسومية البسيطة أو ملفات الإعدادات المرنة. بخطوات بسيطة جدًا يمكنك تمكين Opcache على بيئة ServBay لديك، لتحصل على سرعة تحميل وتنفيذ أعلى لتطبيقات PHP، ولتحسن تجربة التطوير والاختبار المحلية. كما يمكنك تكييف إعدادات Opcache وفقًا لخصائص مشروعك واحتياجاتك لتحقيق أفضل أداء. فعّل Opcache الآن في ServBay، وتمتع بقفزة حقيقية في أداء تطبيقات PHP!