For å skille mellom singletons som vedvarer og de som ikke gjør det i Laravel Octane, må du forstå hvordan Octane håndterer singleton-forekomster og hvordan de løses. Her er de viktigste punktene å vurdere:
Singletoner som vedvarer
1. Singletons hos tjenesteleverandører: Singletoner som løses i tjenesteleverandører, spesifikt i «boot»- eller «register»-metodene, vil vedvare på tvers av forespørsler. Dette er fordi disse singletonene løses under oppstart av programmet og lagres i containerbufferen.
2. Varme tjenester: Du kan legge til singletons til "warm"-arrayen i Octane-konfigurasjonsfilen for å sikre at de løses og vedvarer under oppstart av programmet. På denne måten vil disse singletonene være tilgjengelige på tvers av 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 Services: Hvis du har en pakke som registrerer og løser en singleton inne i en tjenesteleverandør og du ønsker å flushe den forekomsten før hver forespørsel, kan du legge den til "flush"-matrisen i Octane-konfigurasjonsfilen . Dette sikrer at singletonen 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 løses én 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. Request Instance: Når du løser singletons, sender du en tilbakeringing for å sikre at forespørselsforekomsten blir løst riktig.
5. Configuration Repository: Bruk `config()`-hjelpefunksjonen i stedet for å injisere konfigurasjonslageret for å sikre at det løses riktig.
Ved å følge disse beste fremgangsmåtene og forstå hvordan Octane håndterer singleton-forekomster, kan du effektivt administrere og skille mellom singletons som vedvarer og de som ikke gjør det i Laravel-applikasjonen din som kjører på Octane[2][4][5].
Sitater:[1] https://laracasts.com/discuss/channels/laravel/singletone-not-working-in-laravel
[2] https://divinglaravel.com/laravel-octane-bootstrapping-the-application-and-handling-requests
[3] https://grantwinney.com/difference-between-singleton-scoped-transient/
[4] https://betterprogramming.pub/the-downsides-of-coding-with-laravel-octane-17f4a7a4ea85?gi=d8afa3954408
[5] https://www.prismetric.com/laravel-octane/