Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 持続するシングルトンとオクタンではないシングルトンを区別するにはどうすればよいですか


持続するシングルトンとオクタンではないシングルトンを区別するにはどうすればよいですか


持続するシングルトンとLaravel Octaneにないものを区別するには、OctaneがSingletonインスタンスをどのように処理し、どのように解決するかを理解する必要があります。考慮すべき重要なポイントは次のとおりです。

###持続するシングルトン

1。サービスプロバイダーのシングルトン:特に「ブート」または「登録」メソッドでサービスプロバイダー内で解決されるシングルトンは、リクエスト全体にわたって持続します。これは、これらのシングルトンがアプリケーションのブートストラップ中に解決され、コンテナキャッシュに保存されるためです。

2。ウォームサービス:Octane構成ファイルの「Warm」アレイにSingletonsを追加して、アプリケーションのブートストラップ中に解決および持続することを確認できます。これにより、これらのシングルトンはすべてのリクエストで利用可能になります。

###持続しないシングルトン

1。リクエストのシングルトン:リクエスト処理中に解決されるシングルトンは持続しません。それらはすべてのリクエストで構築され、コンテナキャッシュに保存されません。

2。フラッシュサービス:サービスプロバイダー内にシングルトンを登録および解決するパッケージがあり、すべてのリクエストの前にそのインスタンスをフラッシュする場合は、Octane構成ファイルの「フラッシュ」配列に追加できます。これにより、各リクエストを処理した後、シングルトンがコンテナから削除されることが保証されます。

###ベストプラクティス

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-betweenine-singleton-scoped-transient/
[4] https://betterprogramming.pub/the-downsides-of-coding-with-laravel-octane-17f4a7a4ea85?gi=d8afa3954408
[5] https://www.prismetric.com/laravel-octane/