【发布时间】:2011-06-13 14:35:51
【问题描述】:
我正在开发一个使用 php 下载文件的程序。
脚本请求如下:http://localhost/download.php?file=abc.zip
我使用了Resumable downloads when using PHP to send the file?中提到的一些脚本
它确实适用于300M以下的文件,无论是多线程还是单线程下载,但是当我尝试下载>300M的文件时,我在单线程下载时遇到问题,我只下载了大约250M 数据,那么似乎 http 连接已断开。它不会在 断点 中中断 ..为什么? 调试脚本,我查明了它坏的地方:
$max_bf_size = 10240;
$pf = fopen("$file_path", "rb");
fseek($pf, $offset);
while(1)
{
$rd_length = $length < $max_bf_size? $length:$max_bf_size;
$data = fread($pf, $rd_length);
print $data;
$length = $length - $rd_length;
if( $length <= 0 )
{
//__break-point__
break;
}
}
这似乎每个请求的文档只能获得 250M 数据缓冲区到 echo 或 print..但是当我使用多线程下载文件时它可以工作
【问题讨论】:
标签: php download buffer resume-download