Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ako rozlíšim medzi jednotlivými jedincami, ktoré pretrvávajú a tými, ktoré nie sú v Octane


Ako rozlíšim medzi jednotlivými jedincami, ktoré pretrvávajú a tými, ktoré nie sú v Octane


Aby ste v Laravel Octane rozlíšili medzi jednotlivými inštanciami, ktoré pretrvávajú, a tými, ktoré nie, musíte pochopiť, ako Octane spracováva jednotlivé inštancie a ako sa riešia. Tu sú kľúčové body, ktoré treba zvážiť:

Singletons, ktoré pretrvávajú

1. Singletons in Service Providers: Singletons, ktoré sú vyriešené v rámci poskytovateľov služieb, konkrétne v metódach `boot` alebo `register`, budú pretrvávať pri všetkých požiadavkách. Je to preto, že tieto singletony sú vyriešené počas zavádzania aplikácie a sú uložené vo vyrovnávacej pamäti kontajnera.

2. Warm Services: Môžete pridať singletony do „warm“ poľa v konfiguračnom súbore Octane, aby ste sa uistili, že sú vyriešené a pretrvávajú počas zavádzania aplikácie. Týmto spôsobom budú tieto singletony dostupné vo všetkých požiadavkách.

Singletons, ktoré nepretrvajú

1. Singletons in Request Handling: Singletons, ktoré sú vyriešené počas spracovania žiadostí, nebudú pretrvávať. Vytvárajú sa pri každej požiadavke a neukladajú sa do vyrovnávacej pamäte kontajnera.

2. Flush Services: Ak máte balík, ktorý registruje a rieši singleton v rámci poskytovateľa služieb a chcete túto inštanciu vyprázdniť pred každou požiadavkou, môžete ju pridať do poľa „flush“ v konfiguračnom súbore Octane. . To zaisťuje, že singleton sa vyberie z kontajnera po vybavení každej požiadavky.

Osvedčené postupy

1. Použite spätné volania: Pri registrácii jednotlivých volaní použite spätné volania namiesto skutočnej inštancie, aby ste sa uistili, že budú vyriešené iba raz.

2. Vyhnite sa statickým vlastnostiam: Vyhnite sa používaniu statických vlastností vo svojich jednotkách, pretože môžu viesť k úniku pamäte a pretrvávať pri všetkých požiadavkách.

3. Použite konštanty: Ak je to možné, použite konštanty namiesto statických vlastností, aby ste zabezpečili nemennosť.

4. Inštancia požiadavky: Pri riešení jednotlivých prípadov odošlite spätné volanie, aby ste sa uistili, že inštancia požiadavky je vyriešená správne.

5. Úložisko konfigurácií: Namiesto vloženia archívu konfigurácie použite pomocnú funkciu `config()`, aby ste sa uistili, že je správne vyriešený.

Dodržiavaním týchto osvedčených postupov a pochopením toho, ako Octane spracováva jednotlivé inštancie, môžete efektívne spravovať a rozlišovať medzi singletonmi, ktoré pretrvávajú, a tými, ktoré nie sú vo vašej Laravel aplikácii spustenej na Octane[2][4][5].

Citácie:
[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/