2014-02-25 34 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時)。

相關問題