[英]php Curl confilict CURLOPT_FILE and CURLOPT_RETURNTRANSFER in docker
[英]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 remaining
或Unknown bytes remaining
的信息? 這是因為瀏覽器無法檢索大小,並且無法計算剩余時間或大小。 這就是你正在發生的事情。 您的文件大小檢索代碼正確。
另一個原因可能是:有時服務器不支持HEAD
請求(當您使用CURLOPT_NOBODY
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.