偶然发现
最近在公司日志平台 总是可以看到很多关于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 );