您的位置:首页 > 编程语言 > PHP开发

php断点续传下载大文件

2017-07-04 00:00 148 查看
摘要: php curl
参考文章:http://blog.csdn.net/udbiawdif/article/details/9103947

最近需要使用php写个脚本,在开机的时候检测当前版本是否是最新的,如果不是,需要连接服务器,并下载安装包,解压,覆盖等。

但是在下载安装包的时候遇到问题:如何断点续传?

很多时候,客户的网络不是很好,或者经过非正常的原因,关机,死机等。已下载的文件可能在下次下载的时候毫无作用。关于这方面的资料也比较少,可能也是因为需求奇葩吧。

废话少说,贴代码

<?php
/**
* 断点续传下载文件
*/
set_time_limit(0);
/**
* @param $url 下载地址
* @param $saveFile 保存到指定文件
* @param int $offset 偏移量
* @param string $proxy
* @return mixed
*/
function downUrl($url, $saveFile, $offset = 0, $proxy = '') {
$h_curl = curl_init();
$h_file = fopen($saveFile, 'ab');
curl_setopt($h_curl, CURLOPT_HEADER, 0);
curl_setopt($h_curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($h_curl, CURLOPT_TIMEOUT, 10000);
curl_setopt($h_curl, CURLOPT_URL, $url);
curl_setopt($h_curl, CURLOPT_FILE, $h_file);
curl_setopt($h_curl, CURLOPT_PROXY, $proxy);//HTTP 代理通道。
curl_setopt($h_curl, CURLOPT_SSL_VERIFYPEER, false); // 阻止对证书的合法性的检查
curl_setopt($h_curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
curl_setopt($h_curl, CURLOPT_RESUME_FROM, $offset);
//curl_setopt($h_curl, CURLOPT_RETURNTRANSFER, true);
$curl_success = curl_exec($h_curl);
fclose($h_file);
curl_close($h_curl);
return $curl_success;
}
$fileSplitName = 'down/a.rar';//指定下载到文件名称
//判断文件是否存在,若存在则读取大小
if(file_exists($fileSplitName)){
$downSize = filesize($fileSplitName);
}else{
$downSize = 0;
}
$downResult = downUrl('http://172.16.1.130/a.rar',$fileSplitName,$downSize);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: