我正试图用cron作业将一些值从一台服务器更新到另一台服务器。我使用file_get_contents((。
奇怪的是,这偶尔会失败。前一分钟有效,后一分钟无效。我收到这两个错误:
PHP警告:file_get_contents((:PHP_network_getaddresses:getaddrinfo失败:名称或服务未知
PHP警告:file_get_contents((:无法打开流:PHP_network_getaddresses:getaddrinfo失败:名称或服务未知
和:
PHP警告:file_get_contents((:PHP_network_getaddresses:getaddrinfo失败:没有与主机名关联的地址
PHP警告:file_get_contents((:无法打开流:PHP_network_getaddresses:getaddrinfo失败:没有与主机名关联的地址
我已登录到遇到此问题的服务器。使用ping或traceroute可以很好地工作,所以我已经排除了DNS问题。我还添加了谷歌DNS名称服务器,只是为了确定。使用完全相同代码的第三个服务器没有这个问题,所以在";呼叫";结束,而不是";响应";终止在这种情况下,不能选择将主机名替换为IP。
有人知道怎么解决这个问题吗?
在我的案例中,问题是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
在cron作业中运行时,名称查找有时会失败。我只在/etc/hosts中看到过它的名称,但我还没有测试DNS名称。
我看到它发送电子邮件和SMTP连接超时。
我不知道确切的原因,但在我的情况下,我得到了连接到127.0.0.1
而不是localhost
的SMTP代码,问题就消失了。
这是因为第二台服务器上的连接限制,我相信您为cron作业设置了较短的时间间隔。正如您所知,服务器控制来自每个IP的连续连接。您可以选择更长的时间间隔来解决此问题。