Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kako naj razlikujem med enojniki, ki vztrajajo, in tistimi, ki v Octaneu ne


Kako naj razlikujem med enojniki, ki vztrajajo, in tistimi, ki v Octaneu ne


Če želite razlikovati med posameznimi primerki, ki vztrajajo, in tistimi, ki ne obstajajo v Laravel Octane, morate razumeti, kako Octane obravnava primere posameznih elementov in kako se razrešijo. Tu so ključne točke, ki jih je treba upoštevati:

Samski, ki vztrajajo

1. Singletoni pri ponudnikih storitev: Singletoni, ki so razrešeni znotraj ponudnikov storitev, posebej v metodah `boot` ali `register`, bodo vztrajali med zahtevami. To je zato, ker so ti posamezni elementi razrešeni med zagonom aplikacije in so shranjeni v predpomnilniku vsebnika.

2. Tople storitve: Posamezne enote lahko dodate v `toplo` polje v konfiguracijski datoteki Octane, da zagotovite, da so razrešeni in obstojni med zagonom aplikacije. Tako bodo ti enojni elementi na voljo v vseh zahtevah.

Samski, ki ne vztrajajo

1. Singletoni pri obravnavanju zahtev: Singletoni, ki so razrešeni med obravnavanjem zahtev, ne bodo obstali. Izdelani so na vsako zahtevo in niso shranjeni v predpomnilniku vsebnika.

2. Storitve splakovanja: Če imate paket, ki registrira in razreši enojno enoto znotraj ponudnika storitev, in želite ta primerek sprazniti pred vsako zahtevo, ga lahko dodate v matriko splakovanja v konfiguracijski datoteki Octane . To zagotavlja, da se singleton odstrani iz vsebnika po obdelavi vsake zahteve.

Najboljše prakse

1. Uporabite povratne klice: pri registraciji singlov uporabite povratne klice namesto dejanskega primerka, da zagotovite, da so razrešeni samo enkrat.

2. Izogibajte se statičnim lastnostim: Izogibajte se uporabi statičnih lastnosti v vaših posameznih elementih, saj lahko povzročijo uhajanje pomnilnika in se ohranijo med zahtevami.

3. Uporabite konstante: Če je mogoče, uporabite konstante namesto statičnih lastnosti, da zagotovite nespremenljivost.

4. Primer zahteve: Pri razreševanju posameznih elementov posredujte povratni klic, da zagotovite, da je primerek zahteve pravilno razrešen.

5. Konfiguracijski repozitorij: uporabite pomožno funkcijo `config()` namesto vbrizgavanja konfiguracijskega repozitorija, da zagotovite, da je pravilno razrešen.

Z upoštevanjem teh najboljših praks in razumevanjem, kako Octane obravnava enojne primerke, lahko učinkovito upravljate in razlikujete med posameznimi elementi, ki vztrajajo, in tistimi, ki ne obstajajo v vaši aplikaciji Laravel, ki se izvaja na Octane[2][4][5].

Citati:
[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/