Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Octane에서 지속되는 싱글톤과 그렇지 않은 싱글톤을 어떻게 구별합니까?


Octane에서 지속되는 싱글톤과 그렇지 않은 싱글톤을 어떻게 구별합니까?


Laravel Octane에서 지속되는 싱글톤과 그렇지 않은 싱글톤을 구별하려면 Octane이 싱글톤 인스턴스를 처리하는 방법과 해결 방법을 이해해야 합니다. 고려해야 할 주요 사항은 다음과 같습니다.

지속되는 싱글톤

1. 서비스 제공자의 싱글톤: 서비스 제공자 내부에서, 특히 `boot` 또는 `register` 메소드에서 확인된 싱글톤은 요청 전반에 걸쳐 지속됩니다. 이는 이러한 싱글톤이 애플리케이션 부트스트랩 중에 확인되어 컨테이너 캐시에 저장되기 때문입니다.

2. Warm Services: Octane 구성 파일의 `warm` 배열에 싱글톤을 추가하여 애플리케이션 부트스트래핑 중에 싱글톤이 해결되고 지속되도록 할 수 있습니다. 이렇게 하면 이러한 싱글톤을 모든 요청에서 사용할 수 있습니다.

지속되지 않는 싱글톤

1. 요청 처리의 싱글톤: 요청 처리 중에 확인된 싱글톤은 지속되지 않습니다. 요청이 있을 때마다 생성되며 컨테이너 캐시에 저장되지 않습니다.

2. Flush Services: 서비스 공급자 내부에 싱글톤을 등록하고 해결하는 패키지가 있고 모든 요청 전에 해당 인스턴스를 플러시하려는 경우 Octane 구성 파일의 'flush' 배열에 추가할 수 있습니다. . 이렇게 하면 각 요청을 처리한 후 싱글톤이 컨테이너에서 제거됩니다.

모범 사례

1. 콜백 사용: 싱글톤을 등록할 때 실제 인스턴스 대신 콜백을 사용하여 한 번만 해결되도록 합니다.

2. 정적 속성 방지: 메모리 누수로 이어질 수 있고 요청 전반에 걸쳐 지속될 수 있으므로 싱글톤에서 정적 속성을 사용하지 마세요.

3. 상수 사용: 불변성을 보장하려면 가능하면 정적 속성 대신 상수를 사용하세요.

4. 요청 인스턴스: 싱글톤을 해결할 때 콜백을 전달하여 요청 인스턴스가 올바르게 해결되었는지 확인합니다.

5. 구성 저장소: 구성 저장소를 삽입하는 대신 'config()' 도우미 기능을 사용하여 문제가 올바르게 해결되었는지 확인하세요.

이러한 모범 사례를 따르고 Octane이 싱글톤 인스턴스를 처리하는 방법을 이해함으로써 Octane[2][4][5]에서 실행되는 Laravel 애플리케이션에서 지속되는 싱글톤과 그렇지 않은 싱글톤을 효과적으로 관리하고 구별할 수 있습니다.

인용:
[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/