file_get_contents():php_network_getaddresses:getaddrinfo失败

时间:2014-04-30 11:02:36

标签: php dns file-get-contents

我尝试使用cron作业将某些值从一台服务器更新到另一台服务器。我使用file_get_contents()。

奇怪的是偶尔会失败。一分钟它起作用,另一分钟它不会起作用。 我收到这两个错误:

  

PHP警告:file_get_contents():php_network_getaddresses:getaddrinfo失败:名称或服务未知

     

PHP警告:file_get_contents():无法打开流:php_network_getaddresses:getaddrinfo failed:名称或服务未知

  

PHP警告:file_get_contents():php_network_getaddresses:getaddrinfo failed:没有与主机名关联的地址

     

PHP警告:file_get_contents():无法打开流:php_network_getaddresses:getaddrinfo failed:没有与主机名关联的地址

我已登录遇到此问题的服务器。使用ping或traceroute工作正常,所以我排除了DNS问题。我还添加了谷歌DNS名称服务器以确保。使用完全相同的代码的第三台服务器没有这个问题,所以它看起来是一个问题"调用"结束,而不是"回应"结束。在这种情况下,不能用IP替换主机名。

有谁知道如何解决这个问题?

3 个答案:

答案 0 :(得分:11)

就我而言,问题是Apache在启动时从/etc/resolv.conf获取DNS条目。当我启动Apache时,网络尚未设置。重新启动Apache(配置网络后)解决了我的问题。

我在博文http://diogomelo.net/blog/16/Warning-file_get_contents-php_network_getaddresses-getaddrinfo-failed-No-address-associated-with-hostname

上详细解释了这个案例

答案 1 :(得分:1)

有时在cron作业中运行时,名称查找似乎失败。我只在/ etc / hosts中看到了它的名字,但我还没有测试过DNS名称。

我通过发送电子邮件和SMTP连接超时看到了它。

我不知道具体原因,但就我而言,我的SMTP代码连接到127.0.0.1而不是localhost,问题就消失了。

答案 2 :(得分:0)

这是因为第二台服务器上的连接限制,我相信您已为cron作业设置了较短的时间间隔。 如您所知,服务器控制来自每个IP的连续连接。 您可以选择较长的时间间隔来解决此问题。