Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ako môžem rozlišovať medzi singletónmi, ktoré pretrvávajú, a tými, ktorí nie sú v oktáne


Ako môžem rozlišovať medzi singletónmi, ktoré pretrvávajú, a tými, ktorí nie sú v oktáne


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/