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/