Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Jak odróżnić singletony, które utrzymują się od tych, które nie występują w Octane


Jak odróżnić singletony, które utrzymują się od tych, które nie występują w Octane


Aby rozróżnić singletony, które się utrzymują, od tych, które nie występują w Laravel Octane, musisz zrozumieć, w jaki sposób Octane obsługuje instancje singletonów i jak są one rozwiązywane. Oto kluczowe punkty do rozważenia:

Singletony, które się utrzymują

1. Singletony u dostawców usług: Singletony rozwiązane wewnątrz dostawców usług, szczególnie w metodach `boot` lub `register`, będą obowiązywać we wszystkich żądaniach. Dzieje się tak, ponieważ te singletony są rozpoznawane podczas ładowania aplikacji i są przechowywane w pamięci podręcznej kontenera.

2. Usługi ciepłe: Możesz dodać singletony do tablicy `warm` w pliku konfiguracyjnym Octane, aby mieć pewność, że zostaną rozwiązane i utrwalone podczas ładowania aplikacji. W ten sposób te singletony będą dostępne we wszystkich żądaniach.

Singletony, które się nie utrzymują

1. Singletony w obsłudze żądań: Singletony rozwiązane podczas obsługi żądań nie będą trwałe. Są one konstruowane na każde żądanie i nie są przechowywane w pamięci podręcznej kontenera.

2. Opróżnij usługi: Jeśli masz pakiet rejestrujący i rozwiązujący singleton u dostawcy usług i chcesz opróżnić tę instancję przed każdym żądaniem, możesz dodać ją do tablicy `flush` w pliku konfiguracyjnym Octane . Dzięki temu singleton zostanie usunięty z kontenera po obsłużeniu każdego żądania.

Najlepsze praktyki

1. Użyj wywołań zwrotnych: Podczas rejestracji singletonów używaj wywołań zwrotnych zamiast rzeczywistej instancji, aby mieć pewność, że zostaną rozwiązane tylko raz.

2. Unikaj właściwości statycznych: Unikaj używania właściwości statycznych w singletonach, ponieważ mogą one prowadzić do wycieków pamięci i utrzymywać się w żądaniach.

3. Użyj stałych: Jeśli to możliwe, używaj stałych zamiast właściwości statycznych, aby zapewnić niezmienność.

4. Instancja żądania: Rozwiązując singletony, przekaż wywołanie zwrotne, aby upewnić się, że instancja żądania została poprawnie rozwiązana.

5. Repozytorium konfiguracji: Użyj funkcji pomocniczej `config()` zamiast wstrzykiwać repozytorium konfiguracji, aby upewnić się, że zostało ono poprawnie rozwiązane.

Postępując zgodnie z tymi najlepszymi praktykami i rozumiejąc, w jaki sposób Octane obsługuje instancje singletonów, możesz skutecznie zarządzać singletonami, które utrzymują się i tymi, które nie działają, oraz rozróżniać je w aplikacji Laravel działającej na Octane[2] [4] [5].

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