지속되는 싱글 톤과 Laravel Octane에없는 싱글 톤을 구별하려면 옥탄이 싱글 톤 인스턴스를 어떻게 처리하는지 이해해야합니다. 고려해야 할 핵심 사항은 다음과 같습니다.
지속되는 싱글 톤
1. 서비스 제공 업체의 싱글 톤 : 서비스 제공 업체 내부, 특히`boot` 또는`register '방법으로 해결되는 싱글 톤은 요청에 따라 지속됩니다. 이 싱글 톤은 애플리케이션 부트 스트래핑 중에 해결되며 컨테이너 캐시에 저장되기 때문입니다.
2. 따뜻한 서비스 : 옥탄 구성 파일의 '따뜻한'배열에 싱글 톤을 추가하여 응용 프로그램 부트 스트랩 래핑 중에 해결되고 지속되도록 할 수 있습니다. 이런 식 으로이 싱글 톤은 모든 요청에 따라 사용할 수 있습니다.
지속되지 않는 싱글 톤
1. 요청 처리 중 싱글 톤 : 요청 처리 중에 해결되는 싱글 톤은 지속되지 않습니다. 모든 요청에 따라 구성되며 컨테이너 캐시에 저장되지 않습니다.
2. 플러시 서비스 : 서비스 제공 업체 내부에 싱글 톤을 등록하고 해결하는 패키지가있는 경우 모든 요청 전에 해당 인스턴스를 플러시하려는 경우 옥탄 구성 파일의 '플러시'배열에 추가 할 수 있습니다. 이를 통해 각 요청을 처리 한 후 싱글 톤이 컨테이너에서 제거되도록합니다.
모범 사례
1. 콜백 사용 : 싱글 톤을 등록 할 때는 실제 인스턴스 대신 콜백을 사용하여 한 번만 해결되도록하십시오.
2. 정적 특성을 피하십시오 : 싱글 톤에서 정적 특성을 사용하지 않으면 메모리 누출로 이어지고 요청에 따라 지속될 수 있습니다.
3. 상수 사용 : 불변성을 보장하기 위해 가능한 경우 정적 특성 대신 상수를 사용하십시오.
4. 요청 인스턴스 : 싱글 톤을 해결할 때 콜백을 전달하여 요청 인스턴스가 올바르게 해결되도록하십시오.
5. 구성 저장소 : 구성 저장소를 주입하는 대신`config ()`헬퍼 함수를 사용하여 올바르게 해결되도록합니다.
이러한 모범 사례를 따르고 옥탄이 싱글 톤 인스턴스를 처리하는 방법을 이해함으로써, 당신은 지속되는 싱글 톤과 옥탄에서 실행되지 않는 싱글 톤을 효과적으로 관리하고 차별화 할 수 있습니다 [2] [4] [5].
인용 :[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-ween-singleton-scoped-transient/
[4] https://betterprogramming.pub/the-downsides-of-coding-with-laravel-octane-17f4a4a85?gi=d8afa3954408
[5] https://www.prismetric.com/laravel-octane/