【问题标题】:Symfony2 file download cutoff from Apache ServerSymfony2 文件从 Apache 服务器下载截止
【发布时间】:2014-11-07 15:28:05
【问题描述】:

我已经编写了一个 Symfony2(PHP MVC 框架)脚本来从服务器下载一个 zip 文件。但是文件下载中途停止。我在 apache 配置中增加了 max_execution_time。问题仍然存在。

有没有人能快速解决这个问题?

提前致谢。

【问题讨论】:

  • 这听起来像是浏览器的问题?你用的是哪一个?
  • 文件有多大?我在使用大文件时遇到过这样的问题,您需要做的就是允许流式下载。此外,如果您显示一些代码,它将更容易看到问题
  • 大家好,请检查此 URL 以获取为下载文件而编写的代码脚本:pastebin.com/WS6vjWyQ

标签: php apache symfony download


【解决方案1】:

您似乎对大文件(下载视频存档)有疑问。您应该使用StreamedResponse。这样,您不必将文件的全部内容存储在内存中,它只会流式传输到客户端。您当前执行此操作的方式使文件在开始下载之前加载到内存中。您可以看到为什么这可能是一个问题。下面是一个简单的示例,说明如何将文件流式传输到客户端:

$path = "//usr/www/users/jjdqlo/Wellness/web/yoga_videos/archive.zip";

return new StreamedResponse(
        function () use ($path) {  // first param is a callback, where you do the readfile()
            readfile($path);
        }, 
        200,  // second param is the http status code
        array(  // third param is an array of header settings
                'Content-Disposition' => 'attachment;filename="archive.zip"',
                'Content-Type' => 'application/zip'
        )
);

试一试。假设问题是因为文件大小,这应该可以解决问题。

【讨论】:

  • 谢谢赛哈尔。我会试试你的建议
  • 实际上在下载开始后大约 7-8 分钟左右下载会停止。 max_execution_time 限制也增加了这里可能是什么确切的问题?
  • 我在我的任务的日志文件中获得了以下成绩单,但我没有看到任何错误。 pastebin.com/Luu2zJ8a你能澄清一下这个bug是不是来自服务器端吗?
  • 错误出现在 apache 或 php 日志中,而不是 symfony 日志中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-21
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多