Ahhoz, hogy különbséget tudjon tenni a Laravel Octane-ban fennmaradó és nem létező szingapúrok között, meg kell értenie, hogy az Octane hogyan kezeli az egyhangú példányokat, és hogyan oldja meg azokat. Íme a legfontosabb szempontok, amelyeket figyelembe kell venni:
Singletons, amelyek továbbra is fennállnak
1. Singletons in Service Providers: A szolgáltatókon belül feloldott szingletonok, különösen a "boot" vagy a "register" metódusban, a kérések között megmaradnak. Ennek az az oka, hogy ezeket a szingleteket az alkalmazás rendszerindítása során a rendszer feloldja, és a tároló gyorsítótárában tárolja őket.
2. Warm Services: Az Octane konfigurációs fájlban található "meleg" tömbhöz szingutonokat adhat hozzá, hogy biztosítsa azok feloldását és fennmaradását az alkalmazás rendszerindítása során. Ily módon ezek a szinglihangok minden kérés esetén elérhetőek lesznek.
Singletonok, amelyek nem maradnak fenn
1. Singletons in Request Handling: A kéréskezelés során feloldott szingletonok nem maradnak fenn. Ezeket minden kérésre elkészítik, és nem tárolódnak a tároló gyorsítótárában.
2. Flush Services: Ha van egy csomagja, amely regisztrál és felold egy szinglitont egy szolgáltatón belül, és minden kérés előtt ki szeretné üríteni azt a példányt, akkor hozzáadhatja az Octane konfigurációs fájl "flush" tömbjéhez. . Ez biztosítja, hogy az egyes kérések kezelése után a szingli eltávolításra kerüljön a tárolóból.
Bevált gyakorlatok
1. Visszahívások használata: Singletonok regisztrálásakor a tényleges példány helyett használjon visszahívásokat, hogy azok csak egyszer történjenek meg.
2. Kerülje a statikus tulajdonságokat: Kerülje a statikus tulajdonságok használatát a szingliben, mivel azok memóriaszivárgáshoz vezethetnek, és a kérések között is fennmaradhatnak.
3. Konstansok használata: Ha lehetséges, használjon állandókat a statikus tulajdonságok helyett, hogy biztosítsa az állandóságot.
4. Példány kérése: Az egyhangúak feloldásakor adjon visszahívást, hogy megbizonyosodjon a kéréspéldány helyes feloldásáról.
5. Configuration Repository: Használja a `config()' helper függvényt ahelyett, hogy a konfigurációs tárat beilleszti a helyes feloldás érdekében.
Ha követi ezeket a bevált módszereket, és megérti, hogy az Octane hogyan kezeli az egyhangú példányokat, hatékonyan kezelheti és megkülönböztetheti a fennmaradó és a nem létező singletonokat az Octane-on futó Laravel alkalmazásban[2][4][5].
Idézetek:[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/