Norėdami atskirti vienetinius, kurie išlieka, ir tuos, kurių nėra Laravel Octane, turite suprasti, kaip Octane tvarko pavienius atvejus ir kaip jie sprendžiami. Štai pagrindiniai dalykai, į kuriuos reikia atsižvelgti:
Vienišiai, kurie išlieka
1. Singletons in Service Providers: pavieniai atvejai, išspręsti paslaugų teikėjų viduje, konkrečiai naudojant „įkrovos“ arba „registravimo“ metodus, išliks visose užklausose. Taip yra todėl, kad šie pavieniai elementai išsprendžiami programos įkrovos metu ir yra saugomi konteinerio talpykloje.
2. Šiltos paslaugos: „Octane“ konfigūracijos failo „šiltajame“ masyve galite pridėti pavienių atspalvių, kad užtikrintumėte, jog jie bus išspręsti ir išliks programos įkrovos metu. Tokiu būdu šie pavieniai telefonai bus pasiekiami pagal visas užklausas.
Vienišiai, kurie neišnyksta
1. Singletons tvarkant užklausą: pavieniai tonai, kurie buvo išspręsti tvarkant užklausą, neišliks. Jie kuriami pagal kiekvieną užklausą ir nėra saugomi konteinerio talpykloje.
2. Flush Services: jei turite paketą, kuris registruoja ir išsprendžia vieną paslaugų teikėjo elementą, ir norite išvalyti tą egzempliorių prieš kiekvieną užklausą, galite įtraukti jį į masyvo „nuplauti“ konfigūracijos faile „Octane“. . Taip užtikrinama, kad po kiekvieno užklausos singlas bus išimtas iš konteinerio.
Geriausia praktika
1. Naudokite atgalinius skambučius: registruodami pavienius skambučius naudokite atgalinius skambučius, o ne tikrąjį egzempliorių, kad įsitikintumėte, jog jie bus išspręsti tik vieną kartą.
2. Venkite statinių ypatybių: nenaudokite statinių savybių savo vienetuose, nes tai gali sukelti atminties nutekėjimą ir išlikti visose užklausose.
3. Naudokite konstantas: jei įmanoma, naudokite konstantas vietoj statinių savybių, kad užtikrintumėte nekintamumą.
4. Užklausos egzempliorius: spręsdami pavienius klausimus, perduokite atgalinį skambutį, kad įsitikintumėte, jog užklausos atvejis yra tinkamai išspręstas.
5. Konfigūracijos saugykla: naudokite „config()“ pagalbinę funkciją, o ne įkiškite konfigūracijos saugyklą, kad įsitikintumėte, jog ji tinkamai išspręsta.
Laikydamiesi šios geriausios praktikos ir suprasdami, kaip „Octane“ tvarko pavienius egzempliorius, galite efektyviai valdyti ir atskirti „Laravel“ programoje, veikiančioje „Octane“[2][4][5].
Citatos:[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/