关于DNS解析不受超时设置问题

在很多时候,我们尽管做了超时设置,但任然是无济于事的,后面上网查了很多文章,大致有了解决方案,但是造成这个问题的原因还是不太清楚的迷,下面就简单说一下我遇到的DNS解析超时问题:

刚开始只设置了请求超时`CURLOPT_TIMEOUT`选项,时间为3秒,如下:
curl_setopt($curl, CURLOPT_TIMEOUT, 3); // 设置超时限制防止死循环
发现curl执行时间是12秒多,又追加了连接超时`CURLOPT_CONNECTTIMEOUT`为2秒,如下:
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2); // 设置连接超时限制防止死循环
然鹅,并没有卵用,curl执行时间仍然是12秒,且报同样的curl_error [Resolving timed out after 3511 milliseconds]

 

因为本人比较执着,终于找到了有用的文章,试着根据里边讲到的去指定DNS解析规范为IPV4,问题完美解决掉了,最终设置如下:

curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );// 解决DNS解析不受超时设置控制
curl_setopt($curl, CURLOPT_TIMEOUT, 3); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2); // 设置连接超时限制防止死循环

 


很感激这位博主的聪明才智,我仅是一位搬运工,为了更多遇到相同问题的人能准确地定位问题,并解决掉问题。

参考文章:https://phpjieshuo.com/archives/124/

 

PS:如果有大神知道造成这个问题的原因,并给予回复的话,感恩

上一篇:使用图灵机器人api搭建微信聊天机器人php实现


下一篇:PHP 实现appStore内购的服务器端验证