تكرار السؤال: …
الإجابة المختصرة
يشغل التطبيق فوق خوادم عالية السرعة (FrankenPHP أو Swoole) مع إبقاء التطبيق محملاً في الذاكرة؛ وتحدث تسريبات الحالة عند تخزين بيانات الطلب في متغيرات عامة أو Singletons.
الشرح
يلغي Octane وقت إقلاع Laravel لكل طلب. ولكن نظراً لأن العملية الواحدة تخدم آلاف الطلبات المتتالية، فإن أي متغير يُحفظ في فئة Singleton أو متغير إستاتيكي لن يُمسح بعد انتهاء الطلب، مما يهدد بتسريب بيانات مستخدم لآخر. يوفر Octane أدوات لتسجيل حزم التنظيف (Warmers & Terminators) ومستمعات لإعادة تعيين الحالات الحساسة بين الطلبات.
مثال بالكود
// خطير جداً في Octane: تسريب بيانات بين المستخدمين
class BadService {
public static ?User $currentUser = null;
}أخطاء شائعة
- الاعتماد على الـ Singletons لتخزين معلومات الطلب الحالي أو المستخدم النشط في بيئة Octane.
أسئلة متابعة
- ما الفرق الجوهري بين أمر php artisan queue:work وأمر queue:listen؟
- ما الفرق بين bind و singleton و scoped في Service Container الخاص بـ Laravel؟