私は Symfony2.8 プロジェクトに取り組んでおり、Gaufrette を使用して AWS S3 バケットに保存したファイルを管理しています。ファイルを非公開にする必要があるため、S3 パブリック URL を使用する代わりに、ファイルを S3 からエンド ユーザーにストリーミングしようとしています。StreamWrapper と BinaryFileResponse で動作していますが、信じられないほど遅いです。2.5 MB のファイルは 20 秒以上かかり、それよりも大きいファイルは Web サーバーの 30 秒の時間制限のために失敗します。私は何を間違っていますか?
私のコントローラークラスの関連アクションのコードは次のとおりです。
/**
* @Route("/docs/get/{file}", name="document_read")
*/
public function documentReadAction(Request $request, $file)
{
$filesystem = $this->container->get('knp_gaufrette.filesystem_map')->get('docs');
$map = StreamWrapper::getFilesystemMap();
$map->set('docs', $filesystem);
$filepath = 'gaufrette://docs/'.$file;
return new BinaryFileResponse($filepath);
}