簡體   English   中英

如何使用PHP中的CURLOPT_FILE判斷curl下載是否完成

[英]How to tell if curl download is complete using CURLOPT_FILE in PHP

我有一個功能,可以將特定的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;
}

您在瀏覽器上是否看到任何顯示下載文件Unknown time remaining Unknown bytes remainingUnknown bytes remaining的信息? 這是因為瀏覽器無法檢索大小,並且無法計算剩余時間或大小。 這就是你正在發生的事情。 您的文件大小檢索代碼正確。

另一個原因可能是:有時服務器不支持HEAD請求(當您使用CURLOPT_NOBODY )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM