Norėdami atskirti išliekančius pavienius ir tuos, kurie nėra „Laravel Octane“, turite suprasti, kaip oktanai tvarko singleton egzempliorius ir kaip jie yra išspręsti. Čia yra pagrindiniai dalykai, į kuriuos reikia atsižvelgti:
Singletons, kurie išlieka
1. Paslaugų teikėjų pavieniai: singletonai, išspręsti paslaugų teikėjų viduje, ypač „bagažinėje“ arba „registracijos“ metoduose, išliks visose užklausose. Taip yra todėl, kad šie singletonai yra išspręsti atliekant programos įkrovą ir yra saugomi konteinerio talpykloje.
2. Šiltos paslaugos: „Octane Configuration“ faile galite pridėti singletonus prie „šilto“ masyvo, kad įsitikintumėte, jog jie yra išspręsti ir išlikti programos įkrovos metu. Tokiu būdu šie singletonai bus prieinami visose užklausose.
Singletons, kurie išlieka
1. Singletons tvarkant užklausų tvarkymą: Singletons, išspręstos tvarkant užklausas, neišliks. Jie yra pastatyti pagal kiekvieną užklausą ir nėra saugomi konteinerio talpykloje.
2. FLUST Services: Jei turite paketą, kuris registruoja ir išskiria singletoną paslaugų teikėjo viduje ir norite prieš kiekvieną užklausą praplauti tą egzempliorių, galite pridėti jį prie „praplaukimo“ masyvo oktaninio konfigūracijos faile. Tai užtikrina, kad pavienis iš konteinerio būtų pašalintas iš konteinerio, tvarkant kiekvieną užklausą.
geriausia praktika
1. Naudokite atšaukimus: registruodami singletonus, vietoj tikrojo egzemplioriaus naudokite atšaukimus, kad įsitikintumėte, jog jie išspręsta tik vieną kartą.
2. Venkite statinių savybių: venkite naudoti statines savybes savo singletonuose, nes jos gali sukelti atminties nutekėjimą ir išlikti užklausas.
3. Naudokite konstantas: Jei įmanoma, naudokite konstantas, o ne statines savybes, kad užtikrintumėte nekintamumą.
4. Užklausos egzempliorius: išsprendžiant pavienius atstovus, perduokite atgalinį ryšį, kad įsitikintumėte, jog užklausos egzempliorius yra teisingai išspręstas.
5. Konfigūracijos saugykla: naudokite „config ()“ funkciją, užuot švirkšti konfigūracijos saugyklą, kad įsitikintumėte, jog ji teisingai išspręsta.
Vykdydami šią geriausią praktiką ir supratę, kaip „Octane“ tvarko „Singleton“ egzempliorius, galite veiksmingai valdyti ir atskirti, kurie išlieka, ir tų, kurie nėra jūsų „Laravel“ programoje, veikiančioje oktane [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-17f4a7a4a85?gi=d8afa3954408
[5] https://www.prismetric.com/laravel-octane/