2015-06-28 69 views
0

我用捲曲在PHP中使用下面的代碼來下載文件:捲曲無法下載完整的文件

set_time_limit(0);  
$tmp = __DIR__."\\downloads\\{$this->id}"; 
$fp = fopen ($tmp, 'w+'); 
$ch = curl_init($this->url); 
curl_setopt($ch, CURLOPT_TIMEOUT, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FILE, $fp); 
$r = curl_exec($ch); 
curl_close($ch); 
fclose($fp); 
echo filesize($tmp)."\n"; 

但有時下載的文件大小小於原(原:3.2GB,下載:1.1GB),當使用curl命令行時,它會正確下載文件。試圖重新下載該文件將始終具有相同的結果,但下載的文件大小差異較小。

我也嘗試使用:

file_put_contents($tmp, fopen($this->url, 'r')); 

,但結果是一樣的。大多數文件正確下載,但我需要知道爲什麼這個文件不是。

+0

也許有些問題與網絡?當您停止時可以繼續下載時,您應該尋找解決方案。 –

+0

我可以下載沒有問題的其他大文件,但此文件除外。我認爲這個特定文件存在問題,但可以使用cURL,IDM和Web瀏覽器在PHP之外成功下載。 –

回答

0

嘗試增加

max_execution_time 

和/或

memory_limit 

在php.ini

+0

我增加了他們但沒有成功,我也試着用'shell_exec'調用命令行cURL來恢復下載,但它立即停止並出現錯誤「(33)HTTP服務器似乎不支持字節範圍,無法恢復。 「 –