这是我的文件下载代码:
set_time_limit(0);
header('Set-Cookie: fileDownload=true; path=/'); //used for the file download library for the browser client https://github.com/johnculviner/jquery.fileDownload . Remove if the library isn't used anymore
header('Content-disposition: attachment; filename="' . $file->getName() . '"');
header('Content-Type: application/octet-stream');
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
while (!feof($stream)) {
echo fread($stream, 8192);
ob_flush();
flush();
}
问题在于,当我打开文件的url并且文件大小超过100MB时,下载实际启动会有很大的延迟。有人可以向我解释是什么导致它以及如何解决? 编辑:问题解决了。事实证明,我的网络服务器默认启用了输出缓冲。
答案 0 :(得分:1)
由于您使PHP加载整个文件并将其全部输出一次,因此存在很大的延迟。请参阅此问题Streaming a large file using PHP,了解如何流式传输数据,而不是在一个大负载中提供数据。