Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hur skiljer jag mellan singletoner som kvarstår och de som inte gör det i oktan


Hur skiljer jag mellan singletoner som kvarstår och de som inte gör det i oktan


För att skilja mellan singletoner som kvarstår och de som inte gör i Laravel Octane måste du förstå hur Octane hanterar singleton -instanser och hur de löses. Här är de viktigaste punkterna att tänka på:

Singletons som kvarstår

1. Singletons i tjänsteleverantörer: Singletons som löses i tjänsteleverantörer, särskilt i metoderna "Boot" eller "Register", kommer att fortsätta över förfrågningar. Detta beror på att dessa singletoner löses under applikationens bootstrapping och lagras i containercachen.

2. Varma tjänster: Du kan lägga till singletoner till "Warm" -uppsättningen i oktankonfigurationsfilen för att säkerställa att de löses och kvarstår under applikationens bootstrapping. På detta sätt kommer dessa singletoner att finnas tillgängliga i alla förfrågningar.

Singletons som inte kvarstår

1. Singletons i begäran HANDLING: Singletons som löses under förfrågningshantering kommer inte att kvarstå. De är konstruerade på varje begäran och lagras inte i containercachen.

2. Flush Services: Om du har ett paket som registrerar och löser en singleton i en tjänsteleverantör och du vill spola den instansen innan varje begäran kan du lägga till det i "Flush" -uppsättningen i oktankonfigurationsfilen. Detta säkerställer att Singleton tas bort från behållaren efter att ha hanterat varje begäran.

bästa metoder

1. Använd återuppringningar: När du registrerar singletoner, använd återuppringningar istället för den faktiska instansen för att säkerställa att de bara löses en gång.

2. Undvik statiska egenskaper: Undvik att använda statiska egenskaper i dina singletoner eftersom de kan leda till minnesläckor och fortsätta över förfrågningar.

3. Använd konstanter: Använd konstanter istället för statiska egenskaper när det är möjligt för att säkerställa immutabilitet.

4. Begärinstans: När du löser singletoner, passera en återuppringning för att säkerställa att förfrågningsinstansen löses korrekt.

5. Konfigurationsförvaret: Använd Helper -funktionen `config ()` istället för att injicera konfigurationsförvaret för att säkerställa att det löses korrekt.

Genom att följa dessa bästa metoder och förstå hur Octane hanterar singleton -instanser kan du effektivt hantera och skilja mellan singletoner som kvarstår och de som inte gör i din Laravel -applikation som körs på Octane [2] [4] [5].

Citeringar:
[1] https://laracasts.com/discuss/channels/laravel/singletone-not-working-in-laravel
[2] https://divinglaravel.com/laravel-octane-bootstrapping-the-application-andling-requests
[3] https://grantwinney.com/differference-between-singleton-scoped-transient/
]
[5] https://www.prismetric.com/laravel-octane/