不能恢复下载大于300M

我的工作程序与PHP下载文件。 剧本的要求是这样的: http://localhost/download.php?file=abc.zip我用使用PHP时发送的文件断点续传下载提到的一些脚本?

它绝对适用于文件300M下,无论是多线程还是单线程下载,但是,当我尝试下载文件> 300M,我得到了单线程下载一个问题,我下载大约只有250M的数据,那么它看起来像HTTP连接断开。 它不列入了断点 ..Why突破? 调试脚本时,我明确指出它打破了:

$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的数据缓冲区来echoprint ..但它的工作原理,当我使用多线程下载文件

--------------解决方案-------------

FREAD()将读取到你要求的字节数,所以你正在做一些不必要的工作计算要读取的字节数。 我不知道你的单线程和多线程下载的意思。 你知道的ReadFile()只转储整个文件? 我认为你需要阅读抵消高达$长度字节开始$文件的一部分,对吗?

我还检查我的网络服务器(Apache的?)如果适用的配置和ISP限制; 你的最大响应大小或时间可能被扼杀。

尝试这个:

define(MAX_BUF_SIZE, 10240);
$pf = fopen($file_path, 'rb');
fseek($pf, $offset);
while (!feof($pf)) {
$data = fread($pf, MAX_BUF_SIZE);
if ($data === false)
break;
print $data;
}
fclose($pf);

分类:php 时间:2015-03-14 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.811 (s). 10 q(s)