Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon كيف يخزن لارافيل بينانت واسترداد قيم العلم الميزة


كيف يخزن لارافيل بينانت واسترداد قيم العلم الميزة


يقوم Laravel Pennant بتخزين واسترداد قيم العلم للميزات باستخدام نظام تخزين مرن يدعم سائقين رئيسيين: برنامج تشغيل صفيف في الذاكرة ومؤتمر قاعدة بيانات مستمر.

آليات التخزين:

- برنامج تشغيل الصفيف: يقوم برنامج التشغيل المحللي بحل قيم علامة الميزات في صفيف في الذاكرة. إنه سريع ولكنه عابر ، مما يعني أن قيم علامة الميزة المخزنة موجودة فقط أثناء دورة حياة الطلب الحالية وتضيع بعد ذلك. هذا مفيد لحالات الاستخدام البسيطة أو المؤقتة حيث لا يلزم الثبات.

- برنامج تشغيل قاعدة البيانات (الافتراضي): يمكن أن يستمر Pennant في قيم علامة الميزات في قاعدة بيانات علائقية ، وتحديداً في جدول "الميزات" الذي تم إنشاؤه عن طريق تشغيل ترحيل Pennant. يقوم برنامج التشغيل هذا بتخزين قيم علامة الميزة التي تم حلها باستمرار ، مما يسمح بمشاركة القيم عبر طلبات وخوادم متعددة. إنه مثالي للتطبيقات التي تعمل على خوادم متعددة أو بيئات بدون خادم. يستخدم برنامج تشغيل قاعدة البيانات أيضًا ذاكرة التخزين المؤقت في الذاكرة أثناء طلب واحد لتجنب استعلامات قاعدة البيانات المتكررة لنفس علامة الميزة ، وتحسين الأداء [1] [2] [5].

كيف يتم تعريف أعلام الميزات وحلها:

- يتم تعريف أعلام الميزات باستخدام عمليات الإغلاق التي تحتوي على المنطق لتحديد ما إذا كانت الميزة نشطة أم لا. يمكن أن تقبل هذه عمليات الإغلاق معلمات مثل المستخدم المصادق عليه ، مما يسمح بإعلامات الميزات المنتشر (على سبيل المثال ، تمكين ميزة فقط لمستخدمي المسؤولين).

- عندما يتم فحص علامة الميزة لأول مرة لنطاق معين (مثل المستخدم) ، يقوم Pennant بتنفيذ الإغلاق لحل قيمة الميزة. ثم يتم تخزين هذه القيمة التي تم حلها في برنامج تشغيل التخزين المكون (صفيف أو قاعدة بيانات).

- في الفحوصات اللاحقة لنفس الميزة والنطاق ، يسترجع Pennant القيمة المخزنة من برنامج تشغيل التخزين بدلاً من إعادة حسابها ، مما يحسن الأداء [2] [3].

استرداد قيم علامة الميزة:

-يمكنك استرداد قيمة علامة ميزة واحدة باستخدام طرق مثل "الميزة :: النشطة (اسم الميزة") "للتحقق مما إذا كان تم تمكينه (منطقية) أو" الميزة :: القيمة ("الاسم الميزة") "للحصول على قيمته ، والتي يمكن أن تكون منطقية أو أي نوع بيانات آخر (علامات القيمة الغنية ذات القيمة الغنية).

- يوفر Pennant أيضًا طرقًا لاسترداد قيم علامة الميزات المتعددة في وقت واحد ، مثل "الميزة :: القيم ([" الميزات 1 "،" الميزات 2 "])` أو `الميزة :: all ()` للحصول على جميع الميزات المحددة لنطاق معين.

- يمكن اكتشاف فئات الميزات وتسجيلها ديناميكيًا للتأكد من تضمينها عند استرداد جميع أعلام الميزات [1] [2].

ملخص:

يحل Laravel Pennant قيم علامة الميزات عن طريق تشغيل عمليات إغلاق المنطق المعرفة من قبل المستخدم ، ثم يخزن هذه القيم التي تم حلها إما مؤقتًا في صفيف في الذاكرة أو باستمرار في جدول قاعدة البيانات. تتيح آلية التخزين هذه الراية لاسترداد حالات علم الميزة بكفاءة بناءً على الطلبات اللاحقة دون إعادة حساب ، ودعم كل من حالات الاستخدام البسيطة والمعقدة بما في ذلك الأعلام التي تم تحديدها لكل مستخدم. تتمثل النهج الافتراضي والمأفضل في استخدام برنامج تشغيل قاعدة البيانات للتخزين المستمر ، وخاصة في بيئات الخادم أو الإنتاج المتعدد ، في حين أن برنامج تشغيل الصفيف يناسب سيناريوهات أو اختبار [1] [2] [5].

الاستشهادات:
[1] https://laravel.com/docs/11.x/pennant
[2]
[3] https://www.reddit.com/r/laravel/comments/10yto7q/laravel_pennant_simple_and_lightweight_feature/
[4]
[5] https://wpwebinfotech.com/blog/laravel-pennant-guide/
[6] https://dev.to/saurabh-dhariwal/how-to-danage-feature-flags-with-laravel-pennant-in-2024-1phb
[7] https://stackoverflow.com/questions/77751003/laravel-pennant-store-against-session-for-a- b-testing
[8] https://laracasts.com/series/whats-new-in-laravel-10/episodes/5