Aby ste rozlíšili medzi Singletónmi, ktoré pretrvávajú, a tými, ktorí nie sú v Laravel Octane, musíte pochopiť, ako Octane spracováva inštancie Singleton a ako sú vyriešené. Tu sú kľúčové body, ktoré je potrebné zvážiť:
Singletons, ktoré pretrvávajú
1. Singletons in poskytovatelia služieb: Singletons, ktorí sú vyriešení vo vnútri poskytovateľov služieb, konkrétne v metódach „Boot“ alebo „Register“, budú pretrvávať naprieč požiadavkami. Dôvodom je skutočnosť, že tieto singletony sú vyriešené počas bootstrapingu aplikácie a sú uložené v vyrovnávacej pamäti kontajneru.
2. Warm Services: Singletons môžete pridať do poľa „Warm“ v konfiguračnom súbore oktánu, aby ste sa uistili, že sú vyriešené a pretrvávajúce počas bootstrappingu aplikácií. Týmto spôsobom budú tieto singletony k dispozícii vo všetkých požiadavkách.
Singletons, ktoré nepretrvávajú
1. Singletons in Manestional: Singletons, ktoré sú vyriešené počas spracovania žiadosti, nebudú pretrvávať. Sú skonštruované na každú žiadosť a nie sú uložené v vyrovnávacej pamäti kontajnera.
2. Flush Services: Ak máte balík, ktorý sa zaregistruje a vyrieši singleton vo vnútri poskytovateľa služieb a chcete túto inštanciu prepláchnuť pred každou žiadosťou, môžete ju pridať do poľa `Flush` v konfiguračnom súbore oktánu. To zaisťuje, že singleton je odstránený z kontajnera po vybavení každej žiadosti.
osvedčené postupy
1. Používajte spätné volania: Pri registrácii singletonov použite spätné volania namiesto skutočnej inštancie, aby ste sa uistili, že sú vyriešené iba raz.
2. Vyhnite sa statickým vlastnostiam: Vyhnite sa používaniu statických vlastností vo svojich singletonoch, pretože môžu viesť k úniku pamäte a pretrvávať naprieč požiadavkami.
3. Používajte konštanty: Ak je to možné, používajte konštanty namiesto statických vlastností.
4. Inštancia žiadosti: Pri riešení singletonov odovzdajte spätné volanie, aby ste sa uistili, že inštancia žiadosti je správne vyriešená.
5. Konfiguračné úložisko: Namiesto toho, aby ste vložili konfiguračné úložisko, použite funkciu `config ()` `.
Dodržiavaním týchto osvedčených postupov a pochopením toho, ako Octane rieši inštancie Singleton, môžete efektívne spravovať a rozlišovať medzi singletónmi, ktoré pretrvávajú, a tými, ktoré vo vašej aplikácii Laravel bežia na oktáne [2] [4] [5].
Citácie:[1] https://laracasts.com/discuss/channels/laravel/singletone-not-working-in-laravel
[2] https://divinglaravel.com/laravel-ctane-bootstrapping-the-application-anding-requests
[3] https://grantwinney.com/difference-between-singleton-scoped-transient/
[4] https://betterprogramming.pub/-downsides-of-coding-with-laravel-ctane-17a7a4a85?gi=D8AFA3954408
[5] https://www.prismetric.com/laravel-octane/