curl与file_get_contents访问远程接口慢的解决

  这几天在协调处理短信接口调用失败的问题,处理完后发现发送短信很耗时,要5秒左右,是PHP调用 file_get_contents访问远程接口的的,而我前面处理调用失败问题时最后测试短信接口时是直接用的Linux命令curl调用,速度是非常快的。

  先从代码入手,刚开始以为是file_get_contents比curl慢,虽然觉得也不至于慢到这种程度,但是总得试试看,于是换成curl,依旧很慢。

  难道是域名解析问题?于是在hosts文件里写好本地解析,再试,果真正常了,秒发。看来真是域名解析问题,但又不知为何Shell里没问题,独独PHP里有问题。虽然把域名写死在hosts里能解决问题,但是总不是办法。

  上网查,有人说是PHP缓存了域名解析,重启PHP即可。我马上去重启PHP,还真好了。但是有一点我不明白,既然是缓存,那应该是速度更快才对。在一个技术群里讨论时我突然想起来昨天测试接口时发现服务器设置的首选DNS是不能用的,然后我改了。难道PHP缓存的不是域名解析,而是域名解析服务器(DNS)?看来只有这个解释了,有空可以做个测试验证一下。

发表评论

电子邮件地址不会被公开。 必填项已用*标注