تكرار السؤال: …
الإجابة المختصرة
يقوم OPcache بتخزين الـ Opcode المجمع مسبقاً في الذاكرة لتفادي إعادة قراءة الملفات، بينما يقوم JIT بترجمة مقاطع الـ Opcode المتكررة مباشرة إلى تعليمات الآلة الأصلية (Machine Code).
الشرح
في دورة حياة PHP التقليدية، يتم قراءة الكود وتحليله (Tokenization & Parsing) وتجميعه إلى Opcodes مع كل طلب. يلغي OPcache هذه الخطوة بتخزين الـ Opcodes في الذاكرة المشتركة. أما JIT (المبني بنظام DynASM) فيأخذ المقاطع الأكثر استخداماً (Hot Spots) ويترجمها إلى تعليمات المعالج المباشرة، مما يفيد المهام الحسابية والرياضية الثقيلة أكثر من تطبيقات الويب المقيدة بالـ I/O.
مثال بالكود
; php.ini or conf.d/10-opcache.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.validate_timestamps=0 ; production: files never change between deploys (reset OPcache on deploy)
opcache.jit=tracing
opcache.jit_buffer_size=100Mأخطاء شائعة
- توقع أن يضاعف JIT سرعة تطبيقات الويب العادية (مثل Laravel)، متناسين أن عنق الزجاجة فيها هو استعلامات قواعد البيانات والشبكة.