我正在为我目前正在处理的一个更大的项目构建一个小型下载模块,并且遇到了一些问题。尽管它非常适合小文件,但当浏览器(任何浏览器)开始下载较大的文件时,它会像任何页面一样简单地加载,然后在最后几秒钟内几乎立即“下载”整个文件(无论大小)。我一遍又一遍地浏览了 HTTP 1.1 标准,并且似乎一直在遵循它们。立即想到的一个想法是 PHP 实际上是在向客户端发送数据的时候。答案应该是脚本运行时 - 我在其他长脚本中使用此原理进行调试。
这是相关的代码(当然还有更多,但这是实际发送标头和输出的地方:
header("Content-Type: application/force-download");
header("Content-length: $size");
header('Content-Disposition: attachment; filename="'.$fileData['name'].'"');
for ($i=0; $i<$size; $i+=$step)
{
$content = fread($file, $step);
if ($content === false)
$content = "";
echo $content;
}
die();
有任何想法吗?我有一种感觉,这是一个明显的问题,我长时间盯着这个街区看不到。
提前致谢!