Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Cum fac diferența între singletonurile care persistă și cele care nu în Octane


Cum fac diferența între singletonurile care persistă și cele care nu în Octane


Pentru a diferenția între singleton-urile care persistă și cele care nu în Laravel Octane, trebuie să înțelegeți cum Octane gestionează instanțele singleton și cum sunt rezolvate. Iată punctele cheie de luat în considerare:

Singletons care persistă

1. Singletons în Furnizori de servicii: Singleton-urile care sunt rezolvate în interiorul furnizorilor de servicii, în special în metodele `boot` sau `register`, vor persista între solicitări. Acest lucru se datorează faptului că aceste singleton-uri sunt rezolvate în timpul bootstrapului aplicației și sunt stocate în cache-ul containerului.

2. Servicii calde: Puteți adăuga singleton-uri la matricea `cald` în fișierul de configurare Octane pentru a vă asigura că sunt rezolvate și persistente în timpul pornirii aplicației. În acest fel, aceste singleton-uri vor fi disponibile pentru toate solicitările.

Singletons care nu persistă

1. Singletons în gestionarea cererilor: Singleton-urile care sunt rezolvate în timpul procesării cererilor nu vor persista. Sunt construite la fiecare cerere și nu sunt stocate în cache-ul containerului.

2. Flush Services: Dacă aveți un pachet care înregistrează și rezolvă un singleton în interiorul unui furnizor de servicii și doriți să ștergeți acea instanță înainte de fiecare solicitare, îl puteți adăuga la matricea `flush` din fișierul de configurare Octane . Acest lucru asigură că singleton-ul este scos din container după gestionarea fiecărei cereri.

Cele mai bune practici

1. Utilizați apeluri inverse: când înregistrați singleton-uri, utilizați apeluri inverse în loc de instanța reală pentru a vă asigura că sunt rezolvate o singură dată.

2. Evitați proprietățile statice: evitați să utilizați proprietăți statice în singleton-urile dvs., deoarece acestea pot duce la scurgeri de memorie și pot persista între solicitări.

3. Utilizați constante: Folosiți constante în loc de proprietăți statice atunci când este posibil pentru a asigura imuabilitatea.

4. Instanță de solicitare: atunci când rezolvați singleton-urile, transmiteți un apel invers pentru a vă asigura că instanța solicitării este rezolvată corect.

5. Depozitul de configurare: Folosiți funcția de ajutor `config()` în loc să injectați depozitul de configurare pentru a vă asigura că este rezolvată corect.

Urmând aceste bune practici și înțelegând modul în care Octane gestionează instanțele singleton, puteți gestiona și diferenția eficient între singleton-urile care persistă și cele care nu sunt în aplicația dvs. Laravel care rulează pe Octane[2][4][5].

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