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