1

我正在开发一个 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);
}
4

0 回答 0