2

Service Manager2 つのアクション間でカスタムのインスタンスを渡す方法を知っている人はいますか? Zend Framework 2 のドキュメントにあるように、クラスSM内の 'shared' オプションが に設定されていない場合、 a はそのインスタンスを保持します。ただし、異なるアクションでサービス マネージャーを取得すると、クラスの異なるインスタンスが返されます。私が達成したいのは、サードパーティのサービスへの API 呼び出しを使用することです。これは明らかにさまざまな情報データを含む応答を返しますが、ユーザーが別のアクション/ページに移動した場合、API 要求から以前に返された同じデータは必要な場合は、プロパティとして保存し、毎回別の API リクエストを送信するのではなく、設定されている場合はクラス インスタンスから必要なときにいつでもアクセスできると便利です。Module.phpfalse$manager = $this->getServiceLocator()->get('MyServiceManager');MyServiceManagerMyServiceManager

これが可能であれば、喜んで耳を傾け、学びたいと思います!

4

1 に答える 1

3

通常、リクエストのライフ サイクル (mod_php、fastcgi/fpm を使用) により、リソースの共有が妨げられます。アプリケーション サーバーで実行される言語とは異なり、PHP にはオブジェクト インスタンスを共有する組み込みの方法がありません。

着信リクエストごとに、Web サーバーは php ランタイムの「新しい」インスタンスを作成し、リクエストを実行して、それ自体をクリーンアップします。

APC を使用してオブジェクト インスタンスをシリアル化したり、memcache を使用してリクエスト間の結果を一時的に保存したりできます。

于 2013-06-14T20:12:13.130 に答える