Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Laravel Pennant จัดเก็บและดึงค่าธงฟีเจอร์ได้อย่างไร


Laravel Pennant จัดเก็บและดึงค่าธงฟีเจอร์ได้อย่างไร


Laravel Pennant จัดเก็บและดึงค่าสถานะการตั้งค่าสถานะโดยใช้ระบบจัดเก็บข้อมูลที่ยืดหยุ่นซึ่งรองรับไดรเวอร์หลักสองตัว: ไดรเวอร์อาร์เรย์ในหน่วยความจำและไดรเวอร์ฐานข้อมูลถาวร

กลไกการจัดเก็บ:

- ไดรเวอร์อาร์เรย์: ไดรเวอร์นี้จัดเก็บค่าสถานะการตั้งค่าสถานะคุณสมบัติในอาร์เรย์ในหน่วยความจำ มันเร็ว แต่ชั่วคราวหมายถึงค่าธงฟีเจอร์ที่เก็บไว้จะมีอยู่เฉพาะในช่วงอายุการใช้งานของคำขอปัจจุบันและจะหายไปหลังจากนั้น สิ่งนี้มีประโยชน์สำหรับกรณีการใช้งานที่ง่ายหรือชั่วคราวที่ไม่จำเป็นต้องมีการคงอยู่

- ไดรเวอร์ฐานข้อมูล (ค่าเริ่มต้น): ธงสามารถคงค่าสถานะธงในฐานข้อมูลเชิงสัมพันธ์โดยเฉพาะในตาราง `ฟีเจอร์ 'ที่สร้างขึ้นโดยใช้การย้ายถิ่นของ Pennant ไดรเวอร์นี้จัดเก็บค่าธงฟีเจอร์ที่ได้รับการแก้ไขอย่างต่อเนื่องช่วยให้สามารถแชร์ค่าได้ในหลายคำขอและเซิร์ฟเวอร์ เหมาะอย่างยิ่งสำหรับแอปพลิเคชันที่ทำงานบนเซิร์ฟเวอร์หลายตัวหรือสภาพแวดล้อมที่ไม่มีเซิร์ฟเวอร์ ไดรเวอร์ฐานข้อมูลยังใช้แคชในหน่วยความจำในระหว่างการร้องขอเดียวเพื่อหลีกเลี่ยงการสืบค้นฐานข้อมูลซ้ำสำหรับการตั้งค่าสถานะคุณสมบัติเดียวกันปรับปรุงประสิทธิภาพ [1] [2] [5]

มีการกำหนดและแก้ไขธงฟีเจอร์อย่างไร:

- การกำหนดธงฟีเจอร์ถูกกำหนดโดยใช้การปิดที่มีตรรกะเพื่อตรวจสอบว่าคุณลักษณะมีการใช้งานหรือไม่ การปิดเหล่านี้สามารถยอมรับพารามิเตอร์เช่นผู้ใช้ที่ได้รับการรับรองความถูกต้องซึ่งอนุญาตให้มีการตั้งค่าสถานะฟีเจอร์ที่กำหนดได้ (เช่นการเปิดใช้งานคุณสมบัติสำหรับผู้ใช้ผู้ดูแลระบบเท่านั้น)

- เมื่อธงฟีเจอร์ได้รับการตรวจสอบครั้งแรกสำหรับขอบเขตที่กำหนด (เช่นผู้ใช้) ธงจะดำเนินการปิดเพื่อแก้ไขค่าของคุณลักษณะ ค่าที่ได้รับการแก้ไขนี้จะถูกเก็บไว้ในไดรเวอร์จัดเก็บข้อมูลที่กำหนดค่า (อาร์เรย์หรือฐานข้อมูล)

- ในการตรวจสอบคุณลักษณะและขอบเขตเดียวกันในภายหลังธงจะดึงค่าที่เก็บไว้จากไดรเวอร์จัดเก็บข้อมูลแทนที่จะคำนวณใหม่ซึ่งปรับประสิทธิภาพให้เหมาะสม [2] [3]

การดึงค่าธงฟีเจอร์:

-คุณสามารถดึงค่าของธงฟีเจอร์เดียวโดยใช้วิธีการเช่น `feature :: active ('คุณสมบัติชื่อ')` เพื่อตรวจสอบว่ามันถูกเปิดใช้งาน (บูลีน) หรือ `feature :: value ('feature-name')` เพื่อให้ได้ค่าซึ่งอาจเป็นบูลีนหรือประเภทข้อมูลอื่น ๆ

- ธงยังมีวิธีการดึงค่าธงฟีเจอร์หลายค่าพร้อมกันเช่น `feature :: ค่า (['feature1', 'feature2'])` หรือ `คุณสมบัติ :: all ()` เพื่อให้ได้คุณสมบัติที่กำหนดทั้งหมดสำหรับขอบเขตที่กำหนด

- คลาสคุณลักษณะสามารถค้นพบและลงทะเบียนแบบไดนามิกเพื่อให้แน่ใจว่ามีการรวมเมื่อดึงธงฟีเจอร์ทั้งหมด [1] [2]

สรุป:

Laravel Pennant แก้ไขค่าธงฟีเจอร์โดยเรียกใช้การปิดตรรกะที่ผู้ใช้กำหนดจากนั้นจัดเก็บค่าที่ได้รับการแก้ไขเหล่านี้ชั่วคราวในอาร์เรย์ในหน่วยความจำหรืออย่างต่อเนื่องในตารางฐานข้อมูล กลไกการจัดเก็บนี้ช่วยให้ชายธงสามารถดึงสถานะการตั้งค่าสถานะฟีเจอร์ได้อย่างมีประสิทธิภาพในคำขอที่ตามมาโดยไม่ต้องคำนวณใหม่สนับสนุนทั้งกรณีการใช้งานที่ง่ายและซับซ้อนรวมถึงการตั้งค่าสถานะที่กำหนดไว้ต่อผู้ใช้ วิธีการเริ่มต้นและคำแนะนำคือการใช้ไดรเวอร์ฐานข้อมูลสำหรับการจัดเก็บข้อมูลถาวรโดยเฉพาะอย่างยิ่งในสภาพแวดล้อมแบบหลายเซิร์ฟเวอร์หรือการผลิตในขณะที่ไดรเวอร์อาร์เรย์เหมาะกับสถานการณ์ชั่วคราวหรือการทดสอบ [1] [2] [5]

การอ้างอิง:
[1] https://laravel.com/docs/11.x/pennant
[2] https://www.honeybadger.io/blog/a-guide-to-feature-flags-in-laravel/
[3] https://www.reddit.com/r/laravel/comments/10yto7q/laravel_pennant_simple_and_lightweight_feature/
[4] https://redberry.international/laravel-pennant-feature-flagging-made-easy/
[5] https://wpwebinfotech.com/blog/laravel-pennant-guide/
[6] https://dev.to/saurabh-dhariwal/how-to-manage-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