我有一个将特定zip文件从远程服务器下载到本地Windows服务器的功能。该文件的大小范围从1-10 MB,我希望我的脚本等到它完成。我怎么能肯定地告诉它已经完成了?实际下载工作正常。
功能是:
function get_download($url, $path)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie2.txt');
curl_setopt($curl, CURLOPT_FILE, $path);
$results = curl_exec($curl);
return $results;
}
我以为我会先获取远程文件的大小,然后再与本地文件大小进行比较。但是,这似乎不起作用。不确定它的文件函数是否是.zip文件,但它总是返回-1或-11。我试过这个功能:
function remotefileSize($url)
{
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_NOBODY, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_MAXREDIRS, 3);
curl_exec($curl);
$filesize = curl_getinfo($curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($curl);
return $filesize;
}
答案 0 :(得分:0)
在下载文件时,您是否在浏览器上看到显示Unknown time remaining
或Unknown bytes remaining
的内容?这是因为浏览器无法检索大小并且无法计算剩余时间或大小。这就是你发生的事情。您的文件大小检索代码是正确的。
另一个原因可能是:有时服务器不支持HEAD
请求(当您使用CURLOPT_NOBODY
时)。