facebook batch requests関数の動作をグラフのAPIに再現しようとしています。 Symfonyのバッチリクエスト
public function batchAction (Request $request)
{
$requests = $request->all();
$responses = [];
foreach ($requests as $req) {
$response = $this->get('some_http_client')
->request($req['method'],$req['relative_url'],$req['options']);
$responses[] = [
'method' => $req['method'],
'url' => $req['url'],
'code' => $response->getCode(),
'headers' => $response->getHeaders(),
'body' => $response->getContent()
]
}
return new JsonResponse($responses)
}
だから、このソリューションで、私は私の機能テストは緑のだろうと思う:
は、だから私は、最も簡単な解決策のような私のアプリケーションには、コントローラ上のいくつかの要求を作ることだと思います。
ただし、サービスコンテナをX回初期化すると、アプリケーションが非常に遅くなる場合があります。各要求ごとに、すべてのバンドルが構築されるので、毎回サービスコンテナが再構築されます。
私の問題に対して他にどのような解決策がありますか?
つまり、アプリケーションの他のコントローラから応答を得るには、サーバーに完全な新しいHTTP要求を行う必要がありますか?
ありがとうございました!
Controllerを使用してバッチ処理を行うのは良い方法ではないと思います。 –
"Symfony Command":https://symfony.com/doc/current/console.html/"Symfony Application":http://symfony.com/doc/current/components/console/single_command_tool.htmlとGuzzleClient:http://docs.guzzlephp.org/en/latest/ –
アドバイスをありがとうございます。私はコンソールソリューションを見ましたが、私のエンドポイントはコントローラで既にrouting.ymlファイルから定義されているので、私のユースケースには適切ではないと思います。ですから、コマンドを使うためには、すべてのコントローラをコマンドとして書き直し、何らかのルーティングをコマンドとリンクする必要があると思います。コマンド出力で応答する必要があります。このソリューションでは、ヘッダー、クッキーなどの厳しい要求情報にも関心があります。 – Hammerbot