Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hvordan skelner jeg mellem singletons, der fortsætter, og dem, der ikke gør i oktan


Hvordan skelner jeg mellem singletons, der fortsætter, og dem, der ikke gør i oktan


For at skelne mellem singletons, der fortsætter og dem, der ikke gør det i Laravel Octane, skal du forstå, hvordan Octane håndterer singleton-forekomster, og hvordan de løses. Her er de vigtigste punkter at overveje:

Singletoner der fortsætter

1. Singletoner hos tjenesteudbydere: Singletons, der løses inden for tjenesteudbydere, specifikt i "boot-" eller "register"-metoderne, vil bestå på tværs af anmodninger. Dette skyldes, at disse singletons bliver løst under applikationens bootstrapping og gemmes i containercachen.

2. Warm Services: Du kan tilføje singletons til 'warm'-arrayet i Octane-konfigurationsfilen for at sikre, at de løses og fortsætter under applikationens bootstrapping. På denne måde vil disse singletons være tilgængelige på tværs af alle anmodninger.

Singletoner, der ikke varer ved

1. Singletons i anmodningshåndtering: Singletons, der løses under anmodningshåndtering, vil ikke bestå. De er konstrueret på hver anmodning og gemmes ikke i containercachen.

2. Flush Services: Hvis du har en pakke, der registrerer og løser en singleton i en tjenesteudbyder, og du vil tømme den instans før hver anmodning, kan du tilføje den til "flush"-arrayet i Octane-konfigurationsfilen . Dette sikrer, at singletonen fjernes fra beholderen 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 instans for at sikre, at de kun løses én gang.

2. Undgå statiske egenskaber: Undgå at bruge statiske egenskaber i dine singletons, da de kan føre til hukommelseslækager og fortsætte 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. Request Instance: Når du løser singletons, skal du sende et tilbagekald for at sikre, at anmodningsinstansen løses korrekt.

5. Configuration Repository: Brug `config()`-hjælpefunktionen i stedet for at injicere konfigurationslageret for at sikre, at det løses korrekt.

Ved at følge denne bedste praksis og forstå, hvordan Octane håndterer singleton-forekomster, kan du effektivt administrere og skelne mellem singletons, der fortsætter, og dem, der ikke gør det 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
[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/