PHP 执行 Curl 超时

今天用 PHP 用 CURL 提交一个请求的时候,发现时快时慢,大部分情况下会超时。 刚开始我猜测是请求的对方网站响应太慢了,于是换成 163,baidu 等,发现请求的结果都是这样。

这种情况很可能就是服务器 DNS 出问题了,所以进终端检查了 DNS 配置和 ping,curl 了几个测试网站,结果发现速度很快,貌似都没有问题。 那么可能就是 PHP 出问题了,我通过 curl_getinfo () 获取到 Curl 的请求信息,如图

php-curl-dns-timeout

总共请求时间 25.25s,其中 DNS 解析就用了 25.15s。看来是 PHP 进行域名解析的时候出问题了。网上找了下资料说,这种情况是 PHP 缓存了 DNS 的解析,如果重新更换了 DNS 地址,PHP 并没有重新进行缓存,就产生了上述问题。 解决方法是重启 PHP:

1
service php-fpm restart