【ipv6惹的祸】curl 超时

偶然发现

最近在公司日志平台 总是可以看到很多关于php curl的错误信息


Operation timed out after 0 milliseconds with 0 out of 0 bytes received

Resolving timed out after 5514 milliseconds


非常奇怪,以前都是好的,使用wget获取也非常慢,从下面的结果可以看出来 dns解析比较慢


wget www.domain.com
--2016-11-19 22:17:30--  http://www.domain.com/
Resolving www.domain.com... # 此处停滞约 5 秒
xxx.xxx.xxx.xxx
Connecting to www.domain.com|xxx.xxx.xxx.xxx|:80... connected.
HTTP request sent, awaiting response... 200 OK


然后我就在本地环境 使用上面同样的命令 又非常快,这样就很郁闷了。然后就在一个群里询问,有人说 是IPV6导致的,我记得我们服务器没有开启IPV6的,然后就为了老大,没想到他开启了,然后就出错了

解决办法

对于 PHP curl 来讲,只需要加上下面一句即可解决延迟问题(指定使用IPV4):

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );