我正在开发一个带有 php 的程序来下载文件。脚本请求就像:我在使用 PHP 发送文件时使用了可恢复下载http://localhost/download.php?file=abc.zip
中提到的一些脚本?
它绝对适用于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
..但是当我使用多线程下载文件时它可以工作