如果开启了IPv
curl默认会优先解析 IPv
在对应域名没有 IPv
的情况下
会等待 IPv
dns解析失败 timeout 之后才按以前的正常流程去找 IPv
原因
在程序中我对curl获取内容都作了较为严格的超时限制所以就会造成无法获取内容的问题
解决方法设置默认访问为ipv
php的curl设置方法如下
复制代码 代码如下:
<?php
/**
* IPV
下curl超时问题
*/
$ch = curl_init();
curl_setopt ($ch
CURLOPT_URL
$url);
curl_setopt ($ch
CURLOPT_RETURNTRANSFER
true);
//设置curl默认访问为IPv
if(defined(
CURLOPT_IPRESOLVE
) && defined(
CURL_IPRESOLVE_V
)){
curl_setopt($ch
CURLOPT_IPRESOLVE
CURL_IPRESOLVE_V
);
}
//设置curl请求连接时的最长秒数
如果设置为
则无限
curl_setopt ($ch
CURLOPT_CONNECTTIMEOUT
$timeout);
//设置curl总执行动作的最长秒数
如果设置为
则无限
curl_setopt ($ch
CURLOPT_TIMEOUT
$timeout*
);
$file_contents = curl_exec($ch);
curl_close($ch);
注curl_setopt($ch CURLOPT_IPRESOLVE CURL_IPRESOLVE_V) 只有在php版本及以上版本curl版本及以上版本时以上设置才生效