Pentru a diferenția între singletoni care persistă și cei care nu fac din Laravel Octane, trebuie să înțelegeți cum octanul gestionează instanțele singleton și cum sunt rezolvate. Iată punctele cheie de luat în considerare:
singletoni care persistă
1.. Singleton în furnizorii de servicii: singletoni care sunt rezolvați în interiorul furnizorilor de servicii, în special în metodele „Boot` sau` Register`, vor persista la solicitări. Acest lucru se datorează faptului că aceste singletoni sunt rezolvați în timpul apariției bootstrapping și sunt stocate în memoria cache a containerului.
2. Servicii calde: Puteți adăuga singletoni la tabloul „Warm” în fișierul de configurare octane pentru a vă asigura că sunt rezolvați și persistiți în timpul bootstrapping -ului aplicației. În acest fel, aceste singletons vor fi disponibile la toate solicitările.
singletoni care nu persistă
1.. Singleton în gestionarea cererilor: singletonii care sunt rezolvați în timpul gestionării cererilor nu vor persista. Sunt construite la fiecare cerere și nu sunt depozitate în memoria cache a containerului.
2. Servicii Flush: Dacă aveți un pachet care înregistrează și rezolvă un singleton în interiorul unui furnizor de servicii și doriți să curățați această instanță înainte de fiecare solicitare, îl puteți adăuga la matricea `flush` din fișierul de configurare octan. Acest lucru asigură că singletonul este eliminat din container după gestionarea fiecărei solicitări.
Cele mai bune practici
1. Utilizați apeluri de apel: Când înregistrați singletoni, utilizați apeluri în loc de instanța reală pentru a vă asigura că sunt rezolvate o singură dată.
2. Evitați proprietățile statice: evitați utilizarea proprietăților statice în singletonii dvs., deoarece acestea pot duce la scurgeri de memorie și persistați la solicitări.
3. Utilizați constante: utilizați constante în loc de proprietăți statice atunci când este posibil pentru a asigura imuabilitatea.
4. Instanță de solicitare: Când rezolvați singletonii, treceți un apel de apel pentru a vă asigura că instanța de solicitare este rezolvată corect.
5. Depozitul de configurare: Utilizați funcția `config ()` helper în loc să injectați depozitul de configurare pentru a vă asigura că este rezolvat corect.
Urmărind aceste cele mai bune practici și înțelegând modul în care Octane gestionează instanțele singleton, puteți gestiona și diferenția eficient între singletoni care persistă și cele care nu se află în aplicația dvs. Laravel care rulează pe octan [2] [4] [5].
Citări:[1] https://laracasts.com/discuss/channels/laravel/singletone-not-working-inravel
[2] https://divinglaravel.com/laravel-octane-bootstrapping-the-application-și-manipulare-request-uri
[3] https://grantwinney.com/difference-between-singleton-scoped-transient/
]
[5] https://www.prismetric.com/laravel-octane/