„Laravel Pennant“ saugo ir nuskaito vėliavos vertes, naudodama lanksčią saugojimo sistemą, palaikančią dvi pagrindines tvarkykles: atminties masyvo tvarkyklę ir nuolatinę duomenų bazės tvarkyklę.
Sandėliavimo mechanizmai:
- Masyvo tvarkyklė: Šios tvarkyklės parduotuvės išsprendė funkcijų vėliavos reikšmes atmintyje. Jis yra greitas, bet trumpalaikis, tai reiškia, kad saugomos funkcijos vėliavos vertės egzistuoja tik dabartinio užklausos gyvavimo ciklo metu ir po to prarandama. Tai naudinga paprastiems ar laikiniems naudojimo atvejams, kai atkaklumas nereikalaujamas.
- Duomenų bazės tvarkyklė (numatytasis): „Pennant“ gali išlikti funkcijų vėliavos vertėms reliacinėje duomenų bazėje, ypač lentelėje „Feature“, sukurta paleidžiant Pennantos migracijas. Ši tvarkyklė atkakliai išsaugo išspręstas funkcijų vėliavos vertes, leidžiančias bendrinti vertes keliose užklausose ir serveriuose. Tai idealiai tinka programoms, veikiančioms keliuose serveriuose ar be serverių. Duomenų bazės tvarkyklė taip pat naudoja atmintyje esančią talpyklą per vieną užklausą, kad būtų išvengta pakartotinių duomenų bazės užklausų, skirtų tos pačios funkcijos vėliavai, pagerindama našumą [1] [2] [5].
Kaip apibrėžiamos ir išspręstos funkcijų vėliavos:
- Funkcijų vėliavos yra apibrėžtos naudojant uždarymus, kuriuose yra logika, siekiant nustatyti, ar funkcija yra aktyvi, ar ne. Šie uždarymai gali priimti tokius parametrus kaip autentifikuotas vartotojas, leidžiantis atlikti apimties funkcijų vėliavas (pvz., Įgalinant funkciją tik administratoriaus vartotojams).
- Kai pirmiausia patikrinama funkcijų vėliava, ar nėra tam tikros apimties (pvz., Vartotojas), „Pennant“ vykdo uždarymą, kad išspręstų funkcijos vertę. Tada ši išspręsta vertė saugoma sukonfigūruotoje saugyklos tvarkyklėje (masyvas arba duomenų bazė).
- Vėlesniuose patikrinimuose, ar nėra tos pačios funkcijos ir apimties, „Pennant“ iš saugyklos tvarkyklės nuskaito saugomą vertę, o ne perskaičiavo ją, o tai optimizuoja našumą [2] [3].
Funkcijų vėliavos vertės:
-Galite nuskaityti vienos funkcijos vėliavos vertę, naudodamiesi tokiais metodais kaip „Feature :: Active („ Feature-Name “)„), kad patikrintumėte, ar ji įjungta (loginė), arba „Feature :: vertė („ Feature-Name “), kad gautumėte savo vertę, kuri gali būti loginė ar kita duomenų tipo (turtingos vertės vėliavos).
- „Pennant“ taip pat pateikia kelių funkcijų vėliavos verčių iš karto nustatymo metodus, tokius kaip „Feature :: vertes (['feature1', 'feature2'])` arba `funkcija :: all ()", kad gautumėte visas apibrėžtas funkcijas tam tikram taikymo sričiai.
- Funkcijų klases galima dinamiškai atrastas ir užregistruotas, siekiant užtikrinti, kad jos būtų įtrauktos, kai gaunamos visos funkcijos vėliavos [1] [2].
Santrauka:
„Laravel Pennant“ išsprendžia vėliavos vertes, vykdydama vartotojo apibrėžtą logikos uždarymą ir tada laikinai saugo šias išspręstas vertes atmintyje arba atkakliai duomenų bazės lentelėje. Šis saugojimo mechanizmas leidžia „Pennant“ efektyviai nuskaityti funkcijų vėliavos būsenas vėlesnėse užklausose, neperskaičiuojant, palaikant tiek paprastus, tiek sudėtingus naudojimo atvejus, įskaitant surinktas vėliavas vienam vartotojui. Numatytasis ir rekomenduojamas požiūris yra naudoti duomenų bazės tvarkyklę nuolatiniam laikymui, ypač daugia serverių ar gamybos aplinkoje, o masyvo tvarkyklė tinka trumpalaikiams ar testavimo scenarijams [1] [2] [5].
Citatos:
[1] https://laravel.com/docs/11.x/pennant
[2] https://www.honeybadger.io/blog/a-guide-tofeature-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-test
[8] https://laracasts.com/series/whats-new-in-laravel-10/episodes/5