Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hur skiljer jag på singlar som består och de som inte gör det i oktan


Hur skiljer jag på singlar som består och de som inte gör det i oktan


För att skilja mellan singletons som kvarstår och de som inte gör det 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å:

Singlar som består

1. Singletons hos tjänsteleverantörer: Singletons som löses inom tjänsteleverantörer, specifikt i "boot"- eller "register"-metoderna, kommer att finnas kvar över förfrågningar. Detta beror på att dessa singletons löses under programmets bootstrapping och lagras i containercachen.

2. Warm Services: Du kan lägga till singeltoner till den "varma" arrayen i Octane-konfigurationsfilen för att säkerställa att de löses och kvarstår under applikationens bootstrapping. På så sätt kommer dessa singletons att vara tillgängliga för alla förfrågningar.

Singlar som inte består

1. Singletons i förfrågningshantering: Singletons som löses under förfrågningshanteringen kommer inte att bestå. De konstrueras på varje begäran och lagras inte i containercachen.

2. Flush Services: Om du har ett paket som registrerar och löser en singleton inom en tjänsteleverantör och du vill tömma den instansen före varje begäran, kan du lägga till den i "flush"-matrisen i Octane-konfigurationsfilen . Detta säkerställer att singeln tas bort från behållaren efter hantering av varje begäran.

Bästa metoder

1. Använd återuppringningar: När du registrerar singlar, 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 singletons eftersom de kan leda till minnesläckor och kvarstå ö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 oföränderlighet.

4. Begär instans: När du löser singletons, skicka en återuppringning för att säkerställa att begäran instansen löses korrekt.

5. Configuration Repository: Använd hjälpfunktionen `config()` istället för att injicera konfigurationsförrådet för att säkerställa att det löses korrekt.

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

Citat:
[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/