1
因此,我一直遇到同樣的錯誤...我已經搜索了幾個小時試圖找到一個決議,但我似乎無法找到缺失的一塊。很多其他人在堆棧溢出時詢問錯誤7,但沒有一個與我的方案相似。PHP/cURL錯誤7;無法連接到主機
基本上,我使用cURL來下載通過XML feed發送的圖像。我的整個腳本都能正常工作,一切都在運行,我下面寫的功能甚至可以下載數以千計的圖像(有時會上傳到3000範圍)。
我想我的問題是,爲什麼在下載3000張圖像後它不能連接?
function downloadImage($location, $imagesPath, $imageName) {
//Location fix
$location = str_replace(" ", "%20", $location);
$url = $location;
$path = $imagesPath . $imageName;
$fp = fopen($path, 'w');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); //Wait indefinitately
curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, false);
$data = curl_exec($ch);
if ($data === false) {
echo "DownloadImage cURL failed 1: (" . curl_errno($ch) . ") " . curl_error($ch) . "<br/>";
//exit;
}
curl_close($ch);
fclose($fp);
}
遠程站點是否會因爲太快下載太多圖片而中斷您的操作? – andrewsi
如果服務器支持它,你應該發送一個保持活動的頭,並保持重複使用相同的捲曲手柄進行後續下載。它應該提高性能並可能解決您的問題。 – drew010
$位置是否改變?如果不是,你可以打開連接,然後關閉所有3000+圖像完成後關閉? – craig1231