Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Wie unterscheide ich zwischen Singletons, die in Octane bestehen bleiben, und solchen, die dies nicht tun?


Wie unterscheide ich zwischen Singletons, die in Octane bestehen bleiben, und solchen, die dies nicht tun?


Um in Laravel Octane zwischen Singletons, die bestehen bleiben, und solchen, die nicht bestehen, zu unterscheiden, müssen Sie verstehen, wie Octane mit Singleton-Instanzen umgeht und wie sie aufgelöst werden. Hier sind die wichtigsten Punkte, die es zu beachten gilt:

Singletons, die bestehen bleiben

1. Singletons in Dienstanbietern: Singletons, die innerhalb von Dienstanbietern aufgelöst werden, insbesondere in den Methoden „boot“ oder „register“, bleiben über alle Anforderungen hinweg bestehen. Dies liegt daran, dass diese Singletons während des Anwendungs-Bootstrappings aufgelöst und im Container-Cache gespeichert werden.

2. Warm Services: Sie können Singletons zum „Warm“-Array in der Octane-Konfigurationsdatei hinzufügen, um sicherzustellen, dass sie während des Anwendungs-Bootstrappings aufgelöst und beibehalten werden. Auf diese Weise sind diese Singletons für alle Anforderungen verfügbar.

Singletons, die nicht bestehen bleiben

1. Singletons bei der Anforderungsbearbeitung: Singletons, die während der Anforderungsbearbeitung aufgelöst werden, bleiben nicht bestehen. Sie werden bei jeder Anfrage erstellt und nicht im Container-Cache gespeichert.

2. Flush-Dienste: Wenn Sie ein Paket haben, das einen Singleton innerhalb eines Dienstanbieters registriert und auflöst, und Sie diese Instanz vor jeder Anfrage leeren möchten, können Sie sie dem „flush“-Array in der Octane-Konfigurationsdatei hinzufügen . Dadurch wird sichergestellt, dass der Singleton nach der Bearbeitung jeder Anfrage aus dem Container entfernt wird.

Best Practices

1. Rückrufe verwenden: Verwenden Sie beim Registrieren von Singletons Rückrufe anstelle der eigentlichen Instanz, um sicherzustellen, dass sie nur einmal aufgelöst werden.

2. Statische Eigenschaften vermeiden: Vermeiden Sie die Verwendung statischer Eigenschaften in Ihren Singletons, da diese zu Speicherverlusten führen und über Anfragen hinweg bestehen bleiben können.

3. Konstanten verwenden: Verwenden Sie nach Möglichkeit Konstanten anstelle statischer Eigenschaften, um Unveränderlichkeit sicherzustellen.

4. Anforderungsinstanz: Übergeben Sie beim Auflösen von Singletons einen Rückruf, um sicherzustellen, dass die Anforderungsinstanz korrekt aufgelöst wird.

5. Konfigurations-Repository: Verwenden Sie die Hilfsfunktion „config()“, anstatt das Konfigurations-Repository einzuschleusen, um sicherzustellen, dass es korrekt aufgelöst wird.

Indem Sie diese Best Practices befolgen und verstehen, wie Octane mit Singleton-Instanzen umgeht, können Sie in Ihrer Laravel-Anwendung, die auf Octane ausgeführt wird, effektiv verwalten und zwischen Singletons unterscheiden, die bestehen bleiben, und solchen, die dies nicht tun.

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