Aby rozróżnić singletony, które utrzymują się od tych, które nie w Laravel Octane, musisz zrozumieć, w jaki sposób Octane radzi sobie z instancjami singletonem i jak są one rozwiązane. Oto kluczowe punkty do rozważenia:
singletony, które trwają
1. Singletony w dostawcach usług: singletony, które są rozwiązywane w dostawcach usług, szczególnie w metodach „boot” lub „rejestr”, będą utrzymywać się między żądaniami. Wynika to z faktu, że te singletony są rozwiązywane podczas aplikacji ładowania początkowego i są przechowywane w pamięci podręcznej kontenera.
2. Ciepłe usługi: Możesz dodać singletony do tablicy „ciepłe” w pliku konfiguracyjnym oktanowym, aby upewnić się, że są one rozwiązane i utrzymywane podczas aplikacji. W ten sposób te singletony będą dostępne we wszystkich żądaniach.
singletony, które nie trwają
1. Singletony w obsłudze żądań: Singletony, które są rozwiązywane podczas obsługi żądań, nie będą się utrzymywać. Są one konstruowane na każde żądanie i nie są przechowywane w pamięci podręcznej kontenera.
2. Usługi Flush: Jeśli masz pakiet, który rejestruje i rozwiąże singleton wewnątrz dostawcy usług i chcesz spłukać to instancję przed każdym żądaniem, możesz dodać go do tablicy „Flush” w pliku konfiguracyjnym Octane. Zapewnia to usunięcie singletonu z pojemnika po obsłudze każdego żądania.
Najlepsze praktyki
1. Użyj zwrotów zwrotnych: podczas rejestracji singletonów użyj zwrotów zwrotnych zamiast faktycznej instancji, aby upewnić się, że są one 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: Używaj stałych zamiast właściwości statycznych, jeśli to możliwe, aby zapewnić niezmienność.
4. Instancja żądania: Podczas rozwiązywania singletonów przekazuj zwrot oddzwonienia, aby upewnić się, że instancja żądania zostanie poprawnie rozwiązana.
5. Repozytorium konfiguracji: Użyj funkcji pomocniczej `config ()` zamiast wstrzykiwać repozytorium konfiguracji, aby upewnić się, że jest ono poprawnie rozwiązane.
Postępując zgodnie z tymi najlepszymi praktykami i rozumiejąc, w jaki sposób Octane obsługuje instancje Singleton, możesz skutecznie zarządzać i rozróżniać singletony, które utrzymują się, a tymi, które nie w aplikacji Laravel działają na Octane [2] [4] [5].
Cytaty:[1] https://laracasts.com/discuss/channels/Laravel/singletone-not-Working-in-laravel
[2] https://divivaravel.com/Laravel-octane-bootstrapping-the-paplication-and obsługuje się
[3] https://grantwinney.com/difference-between-singleton-scoped-transient/
[4] https://betterprograming.pub/the-downsides-of---coding-with-laravel-octane-17f4a7a4a85?gi=d8afa3954408
[5] https://www.prismetric.com/Laravel-octane/