2014-02-25 33 views
0

我有一个函数可以将特定的zip文件从远程服务器下载到我的本地Windows服务器。该文件的大小范围从1-10 MB,我希望我的脚本一直等到它完成。我怎样才能确定它已经完成?实际下载工作正常。如何判断使用PHP中的CURLOPT_FILE是否完成curl下载

功能是:

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

你看到你的浏览器,显示Unknown time remainingUnknown bytes remaining同时下载文件什么?这是因为浏览器无法检索大小,无法计算剩余时间或大小。这就是你正在发生的事情。您的文件大小检索代码是正确的。

另一个原因可能是:有时服务器不支持HEAD请求(当您使用CURLOPT_NOBODY时)。

相关问题