للتمييز بين المفردات التي لا تزال قائمة وتلك التي لا في لارافيل أوكتان ، تحتاج إلى فهم كيف يتعامل أوكتان مع مثيلات المفرد وكيفية حلها. فيما يلي النقاط الرئيسية التي يجب مراعاتها:
singletons التي تستمر
1. المفرد في مقدمي الخدمات: سيستمر المفردات التي يتم حلها داخل مزودي الخدمة ، وتحديداً في أساليب "التمهيد" أو "التسجيل" ، عبر الطلبات. وذلك لأن هذه المفردات يتم حلها أثناء تمهيد التطبيق ويتم تخزينها في ذاكرة التخزين المؤقت للحاوية.
2. الخدمات الدافئة: يمكنك إضافة Singletons إلى صفيف "دافئ" في ملف تكوين الأوكتان للتأكد من حلها واستمرارها أثناء تمهيد التطبيق. بهذه الطريقة ، ستكون هذه المفردات متاحة عبر جميع الطلبات.
singletons التي لا تستمر
1. المفرد في التعامل مع الطلب: لن يستمر المفردات التي يتم حلها أثناء التعامل مع الطلب. يتم بناؤها على كل طلب ولا يتم تخزينها في ذاكرة التخزين المؤقت للحاوية.
2. خدمات التدفق: إذا كان لديك حزمة تسجل وحل Singleton داخل مزود خدمة وتريد مسح هذا المثيل قبل كل طلب ، فيمكنك إضافته إلى صفيف "Flush` في ملف تكوين الأوكتان. هذا يضمن إزالة المفرد من الحاوية بعد التعامل مع كل طلب.
أفضل الممارسات
1. استخدم عمليات الاسترجاعات: عند تسجيل المفردات ، استخدم عمليات الاسترجاعات بدلاً من المثيل الفعلي للتأكد من حلها مرة واحدة فقط.
2. تجنب الخصائص الثابتة: تجنب استخدام خصائص ثابتة في المفردات الخاصة بك لأنها يمكن أن تؤدي إلى تسرب الذاكرة والاستمرار عبر الطلبات.
3. استخدم الثوابت: استخدم الثوابت بدلاً من الخصائص الثابتة عندما يكون ذلك ممكنًا لضمان عدم الاستقرار.
4. مثيل طلب: عند حل المفردات ، تمرير رد اتصال لضمان حل مثيل الطلب بشكل صحيح.
5. مستودع التكوين: استخدم وظيفة "التكوين ()" بدلاً من حقن مستودع التكوين لضمان حلها بشكل صحيح.
من خلال اتباع أفضل الممارسات وفهم كيفية تعامل Octane مع حالات Singleton ، يمكنك إدارة وتمييز فعليًا بين المفردات التي تستمر وتلك التي لا في تطبيق Laravel الخاص بك على Octane [2] [4] [5].
الاستشهادات:[1] https://laracasts.com/discuss/channels/laravel/singletone-not-working-in-laravel
[2] https://divinglaravel.com/laravel-octane-bootstrapping-the-application-andling-harling-requests
[3]
[4] https://betterprogramming.pub/the-downsides-of-coding-with-laravel-octane-17f4a7a4ea85؟gi=d8afa3954408
[5] https://www.prismetric.com/laravel-octane/