Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Làm thế nào để lưu trữ đồng xu Laravel và truy xuất các giá trị cờ


Làm thế nào để lưu trữ đồng xu Laravel và truy xuất các giá trị cờ


Laravel Pennant Stores và truy xuất các giá trị cờ tính năng bằng hệ thống lưu trữ linh hoạt hỗ trợ hai trình điều khiển chính: trình điều khiển mảng trong bộ nhớ và trình điều khiển cơ sở dữ liệu liên tục.

Cơ chế lưu trữ:

- Trình điều khiển mảng: Trình điều khiển này lưu trữ các giá trị cờ tính năng đã được giải quyết trong một mảng trong bộ nhớ. Nó nhanh nhưng thoáng qua, có nghĩa là các giá trị cờ đặc điểm được lưu trữ chỉ tồn tại trong vòng đời yêu cầu hiện tại và bị mất sau đó. Điều này rất hữu ích cho các trường hợp sử dụng đơn giản hoặc tạm thời mà không cần phải tồn tại.

- Trình điều khiển cơ sở dữ liệu (mặc định): Pennant có thể tồn tại các giá trị cờ trong cơ sở dữ liệu quan hệ, cụ thể là trong bảng `tính năng` được tạo bằng cách chạy di chuyển của Pennant. Trình điều khiển này lưu trữ các giá trị cờ tính năng đã được giải quyết liên tục, cho phép các giá trị được chia sẻ trên nhiều yêu cầu và máy chủ. Đó là lý tưởng cho các ứng dụng chạy trên nhiều máy chủ hoặc môi trường không có máy chủ. Trình điều khiển cơ sở dữ liệu cũng sử dụng bộ đệm trong bộ nhớ trong một yêu cầu duy nhất để tránh các truy vấn cơ sở dữ liệu lặp lại cho cùng một cờ tính năng, cải thiện hiệu suất [1] [2] [5].

Cách các cờ tính năng được xác định và giải quyết:

- Cờ tính năng được xác định bằng cách sử dụng các đóng có chứa logic để xác định xem một tính năng có hoạt động hay không. Các đóng cửa này có thể chấp nhận các tham số như người dùng được xác thực, cho phép các cờ tính năng phạm vi (ví dụ: chỉ cho phép một tính năng chỉ dành cho người dùng quản trị).

- Khi một cờ tính năng được kiểm tra trước tiên cho một phạm vi nhất định (chẳng hạn như người dùng), Pennant thực hiện việc đóng cửa để giải quyết giá trị của tính năng. Giá trị được giải quyết này sau đó được lưu trữ trong trình điều khiển lưu trữ được cấu hình (mảng hoặc cơ sở dữ liệu).

- Trên các kiểm tra tiếp theo cho cùng một tính năng và phạm vi, Pennant lấy giá trị được lưu trữ từ trình điều khiển lưu trữ thay vì tính toán lại nó, giúp tối ưu hóa hiệu suất [2] [3].

Truy xuất các giá trị cờ tính năng:

-Bạn có thể truy xuất giá trị của một cờ tính năng bằng các phương thức như 'tính năng :: active ('-feature-name ') `để kiểm tra xem nó có được bật không (boolean) hoặc` tính năng :: value ('-name-name ') để nhận giá trị của nó, có thể là boolean hoặc bất kỳ loại dữ liệu nào khác (cờ có giá trị phong phú).

- Pennant cũng cung cấp các phương thức để truy xuất nhiều giá trị cờ tính năng cùng một lúc, chẳng hạn như `tính năng :: value (['tính năng1', 'tính năng2'])` hoặc `tính năng :: all ()` để có tất cả các tính năng được xác định cho một phạm vi nhất định.

- Các lớp tính năng có thể được phát hiện và đăng ký động để đảm bảo chúng được bao gồm khi truy xuất tất cả các cờ tính năng [1] [2].

Bản tóm tắt:

Laravel Pennant giải quyết các giá trị cờ tính năng bằng cách chạy các đóng logic do người dùng xác định và sau đó lưu trữ các giá trị được giải quyết này tạm thời trong một mảng trong bộ nhớ hoặc liên tục trong bảng cơ sở dữ liệu. Cơ chế lưu trữ này cho phép Pennant truy xuất hiệu quả các trạng thái cờ tính năng theo các yêu cầu tiếp theo mà không cần tính toán lại, hỗ trợ cả trường hợp sử dụng đơn giản và phức tạp bao gồm các lá cờ có phạm vi cho mỗi người dùng. Cách tiếp cận mặc định và được đề xuất là sử dụng trình điều khiển cơ sở dữ liệu để lưu trữ liên tục, đặc biệt là trong môi trường sản xuất nhiều máy chủ hoặc sản xuất, trong khi trình điều khiển mảng phù hợp với các kịch bản tạm thời hoặc thử nghiệm [1] [2] [5].

Trích dẫn:
[1] https://laravel.com/docs/11.x/pennant
.
.
.
[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