For å skille mellom singletoner som vedvarer og de som ikke i Laravel Octane, må du forstå hvordan Octane håndterer Singleton -forekomster og hvordan de løses. Her er nøkkelpunktene du må vurdere:
singletoner som vedvarer
1. Singletons i tjenesteleverandører: Singletons som er løst i tjenesteleverandører, spesielt i `Boot` eller` Register` -metodene, vil vedvare på tvers av forespørsler. Dette er fordi disse singletonene blir løst under applikasjonens oppstart og lagres i containerbufferen.
2. Varmtjenester: Du kan legge til singletoner til `varme` -matrisen i oktan -konfigurasjonsfilen for å sikre at de blir løst og vedvarte under applikasjonen bootstrapping. På denne måten vil disse singletonene være tilgjengelige på alle forespørsler.
singletoner som ikke vedvarer
1. Singletoner i forespørselshåndtering: Singletoner som løses under forespørselshåndtering vil ikke vedvare. De er konstruert på hver forespørsel og lagres ikke i containerbufferen.
2. Flush -tjenester: Hvis du har en pakke som registrerer og løser en singleton i en tjenesteleverandør og du vil skylle den forekomsten før hver forespørsel, kan du legge den til `Flush` -matrisen i Octane -konfigurasjonsfilen. Dette sikrer at singleton fjernes fra beholderen etter håndtering av hver forespørsel.
Beste praksis
1. Bruk tilbakeringinger: Når du registrerer singletoner, bruk tilbakeringinger i stedet for den faktiske forekomsten for å sikre at de bare blir løst en gang.
2. Unngå statiske egenskaper: Unngå å bruke statiske egenskaper i singletonene dine, da de kan føre til minnelekkasjer og vedvare på tvers av forespørsler.
3. Bruk konstanter: Bruk konstanter i stedet for statiske egenskaper når det er mulig for å sikre uforanderlighet.
4. Forespørsel om forekomst: Når du løser singletoner, må du sende en tilbakeringing for å sikre at forespørselsforekomsten blir løst riktig.
5. Konfigurasjonsrepository: Bruk `config ()` hjelperfunksjonen i stedet for å injisere konfigurasjonsreposten for å sikre at den blir løst riktig.
Ved å følge disse beste praksisene og forstå hvordan Octane håndterer Singleton -forekomster, kan du effektivt administrere og skille mellom singletoner som vedvarer og de som ikke i Laravel -applikasjonen din kjører på Octane [2] [4] [5].
Sitasjoner:[1] https://laracasts.com/discuss/channels/laravel/singletone-not-working-in-laravel
[2] https://divinglaravel.com/laravel-oktane-bootstrapping-the-application-andling-equests
[3] https://grantwinney.com/diffence-between-singleton-scoped-ransient/
[4] https://betterprogramming.pub/the-downside- ofcoding-with-laravel-oktane-17f4a7a4a85?gi=d8afa3954408
[5] https://www.prismetric.com/laravel-octane/