Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon W jaki sposób Laravel Pennant przechowuje wartości flagi funkcji


W jaki sposób Laravel Pennant przechowuje wartości flagi funkcji


Laravel Pennant przechowuje i pobiera wartości flagi za pomocą elastycznego systemu przechowywania, który obsługuje dwa główne sterowniki: sterownik macierzy w pamięci i trwały sterownik bazy danych.

Mechanizmy przechowywania:

- Sterownik tablicy: ten sterownik magazynuje wartości flagi funkcji w tablicy w pamięci. Jest szybki, ale przejściowy, co oznacza, że ​​przechowywane wartości flagi funkcji istnieją tylko podczas bieżącego cyklu życia żądania i są później utracone. Jest to przydatne w przypadku prostych lub tymczasowych przypadków użycia, w których trwałość nie jest wymagana.

- Sterownik bazy danych (domyślnie): Snooper może utrzymywać wartości flagi w relacyjnej bazie danych, szczególnie w tabeli „funkcje” utworzonej przez uruchamianie migracji Pennant. Ten sterownik przechowuje ustalone wartości flagi funkcji, umożliwiając udostępnianie wartości w wielu żądaniach i serwerach. Jest idealny do aplikacji działających na wielu serwerach lub środowiskach bez serwera. Sterownik bazy danych używa również pamięci podręcznej w pamięci podczas pojedynczego żądania, aby uniknąć powtarzanych zapytań bazy danych dla tej samej flagi funkcji, poprawiając wydajność [1] [2] [5].

W jaki sposób flagi funkcji są zdefiniowane i rozwiązywane:

- Flagi funkcji są definiowane przy użyciu zamknięć zawierających logikę w celu ustalenia, czy funkcja jest aktywna, czy nie. Zamknięcia te mogą akceptować parametry, takie jak uwierzytelniony użytkownik, umożliwiający zaskakujące flagi funkcji (np. Włączanie funkcji tylko dla użytkowników administratora).

- Gdy flaga funkcji jest najpierw sprawdzana pod kątem danego zakresu (takiego jak użytkownik), Pennant wykonuje zamknięcie, aby rozwiązać wartość funkcji. Ta rozdzielona wartość jest następnie przechowywana w skonfigurowanym sterowniku pamięci (tablica lub baza danych).

- Po kolejnych sprawdzaniach dla tej samej funkcji i zakresu Pennant pobiera zapisaną wartość z sterownika pamięci zamiast jej ponownego obliczenia, co optymalizuje wydajność [2] [3].

Wartości flagi funkcji:

-Możesz pobrać wartość pojedynczej flagi funkcji za pomocą metod takich jak „funkcja :: Active („ Feature-Nazwa ”)` Aby sprawdzić, czy jest włączona (boolean) lub „funkcja :: wartość („ nazwa funkcji ”)` `Aby uzyskać wartość, która może być boolelowa lub dowolna inna typ danych (flagi wartości Rich-wartości).

- Pennant zapewnia również metody pobierania wielu wartości flagi funkcji jednocześnie, takie jak „funkcja :: wartości ([„ funkcja 1 ”,„ funkcja 2 ”])` lub `` cexe :: all () `Aby uzyskać wszystkie zdefiniowane funkcje dla danego zakresu.

- Klasy funkcji można dynamicznie odkryć i zarejestrować, aby upewnić się, że są one uwzględnione podczas pobierania wszystkich flag funkcji [1] [2].

Streszczenie:

Laravel Pennant rozwiązuje wartości flagi funkcji, uruchamiając zamykania logiczne zdefiniowane przez użytkownika, a następnie przechowuje te rozdzielone wartości albo w tablicy w pamięci lub uporczywie w tabeli bazy danych. Ten mechanizm przechowywania umożliwia proporancie skutecznie pobierać stany flagi funkcji na kolejne żądania bez ponownego obliczenia, obsługując zarówno proste, jak i złożone przypadki użycia, w tym flagi zaskoczone na użytkownika. Domyślnym i zalecanym podejściem jest użycie sterownika bazy danych do trwałego przechowywania, szczególnie w środowiskach wielorasowych lub produkcyjnych, podczas gdy sterownik macierzy odpowiada przejściowym lub testującym scenariusze [1] [2] [5].

Cytaty:
[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-asy/
[5] https://wpwebinfotech.com/blog/Laravel-penant-Guide/
[6] https://dev.to/saurabh-dhariwal/how-to-manage-feature-flags-with-laravel-penant-on-2024-1phb
[7] https://stackoverflow.com/questions/77751003/Laravel-penant-store-against-session-for-a-b-testing
[8] https://laracasts.com/series/whats-new-in-laravel-10/episodes/5