For at skelne mellem singletoner, der vedvarer, og dem, der ikke i Laravel Octane, skal du forstå, hvordan Octane håndterer Singleton -forekomster, og hvordan de løses. Her er de vigtigste punkter, du skal overveje:
Singletons, der vedvarer
1. Singletons i tjenesteudbydere: Singletons, der er løst inde i tjenesteudbydere, specifikt i metoderne 'Boot' eller 'Register', vil fortsætte på tværs af anmodninger. Dette skyldes, at disse singletons løses under applikationsstopstrapping og opbevares i containercachen.
2. Varmtjenester: Du kan tilføje singletons til det 'varme' array i octane -konfigurationsfilen for at sikre, at de løses og vedvares under applikationsstøvstring. På denne måde vil disse singletons være tilgængelige på tværs af alle anmodninger.
Singletons, der ikke vedvarer
1. Singletons i anmodningshåndtering: Singletons, der er løst under anmodning om anmodning, vil ikke vedvare. De er konstrueret på enhver anmodning og opbevares ikke i containercachen.
2. Flush Services: Hvis du har en pakke, der registrerer og løser en singleton inde i en tjenesteudbyder, og du vil skylle denne instans inden hver anmodning, kan du tilføje den til `Flush '-arrayet i Octane -konfigurationsfilen. Dette sikrer, at singleton fjernes fra containeren efter håndtering af hver anmodning.
Bedste praksis
1. Brug tilbagekald: Når du registrerer singletons, skal du bruge tilbagekald i stedet for den faktiske forekomst for at sikre, at de kun løses en gang.
2. Undgå statiske egenskaber: Undgå at bruge statiske egenskaber i dine singletons, da de kan føre til hukommelseslækager og vedvare på tværs af anmodninger.
3. Brug konstanter: Brug konstanter i stedet for statiske egenskaber, når det er muligt for at sikre uforanderlighed.
4. Anmodningsinstans: Når du løser singletons, skal du videregive et tilbagekald for at sikre, at anmodningsinstansen løses korrekt.
5. Konfigurationsartikel: Brug `config ()` hjælperfunktionen i stedet for at injicere konfigurationsartikelet for at sikre, at den løses korrekt.
Ved at følge denne bedste praksis og forstå, hvordan Octane håndterer singleton -forekomster, kan du effektivt styre og skelne mellem singletoner, der vedvarer, og dem, der ikke i din Laravel -applikation, der kører på Octane [2] [4] [5].
Citater:[1] https://laracasts.com/discuss/channels/laravel/singletone-not-working-in-laravel
)
[3] https://grantwinney.com/difference-fetween-singleton-scoped-transient/
[4] https://betterprogramming.pub/the-downsides-of-coding-with-laravel-octane-17f4a7a4ea85?gi=d8afa3954408
[5] https://www.prismetric.com/laravel-octane/