Annak érdekében, hogy megkülönböztesse azokat a szinguletteket, amelyek fennmaradnak, és azok között, amelyek nem a Laravel Ocane -ben, meg kell értenie, hogy az oktán miként kezeli a szingulett példányokat, és hogyan oldódnak meg. Itt vannak a legfontosabb szempontok, amelyeket figyelembe kell venni:
Singletons, amely fennmarad
1. szingletonok a szolgáltatókban: A szingulettek, amelyeket a szolgáltatókon belül oldottak meg, különösen a „Boot” vagy a „regisztráció” módszerekben, továbbra is fennmaradnak a kérések között. Ennek oka az, hogy ezeket a szinguletteket az alkalmazás bootstrapping során oldják meg, és a konténer gyorsítótárában tárolják.
2. Meleg szolgáltatások: A szinguletteket hozzáadhatja az oktáni konfigurációs fájlban található „Warm” tömbbe, hogy megbizonyosodjon arról, hogy azok megoldódnak és fennmaradnak az alkalmazás bootstrapping során. Ilyen módon ezek a szingulettek minden kérésben elérhetők lesznek.
Singletons, amely nem fennáll
1. szingletonok a kérés kezelésében: A kérés kezelése során megoldott szingulettek nem fognak fennmaradni. Minden kérés alapján készülnek, és nem tárolják a konténer gyorsítótárában.
2. Öblítés Szolgáltatások: Ha van olyan csomagja, amely regisztrálja és megoldja a szingulettet egy szolgáltató belsejében, és minden kérés előtt el akarja öblíteni ezt a példányt, akkor hozzáadhatja azt az oktánkonfigurációs fájlban található „Flush” tömbbe. Ez biztosítja, hogy a szingulettet eltávolítsák a tartályból az egyes kérések kezelése után.
A legjobb gyakorlatok
1. Használjon visszahívásokat: A szingulletek regisztrálásakor a tényleges példány helyett a visszahívásokat használja annak biztosítása érdekében, hogy azok csak egyszer oldódjanak meg.
2. Kerülje a statikus tulajdonságokat: Kerülje el a statikus tulajdonságok használatát a szingulettekben, mivel ezek memória szivárgáshoz vezethetnek, és a kérések során fennmaradhatnak.
3. Használjon állandókat: A statikus tulajdonságok helyett használjon állandókat, ha lehetséges, a változhatatlanság biztosítása érdekében.
4. Példány kérési példánya: A szingulettok megoldásakor adjon vissza visszahívást, hogy a kérési példány helyesen oldódjon meg.
5. Konfigurációs adattár: Használja a `config ()` helper funkciót a konfigurációs lerakat injektálása helyett annak biztosítása érdekében, hogy a helyesen oldódjon meg.
Azáltal, hogy követi ezeket a bevált gyakorlatokat, és megérti, hogy az oktán miként kezeli a szingulett példányokat, hatékonyan kezelheti és megkülönböztetheti azokat a szinguletteket, amelyek továbbra is fennállnak, és azok között, amelyek nem az oktánon 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-pplication-and-dling-requests
[3] https://grantwinney.com/difference-between-singleton-scoped-transient/
[4] https://betterProgramming.pub/the-downsides-of-coding-with-laravel-cTane-17f4a7a4ea85?gi=d8afa3954408
[5] https://www.prismetric.com/laravel-octane/