简体   繁体   中英

file_get_contents(): php_network_getaddresses: getaddrinfo failed

I'm trying to update some values from one server to another server with a cron job. I use file_get_contents().

The strange thing is that this fails occasionally. One minute it works, another minute it won't work. I receive these two errors:

PHP Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known

PHP Warning: file_get_contents(): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known

and:

PHP Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: No address associated with hostname

PHP Warning: file_get_contents(): failed to open stream: php_network_getaddresses: getaddrinfo failed: No address associated with hostname

I've logged into the server that experiences this problem. Using ping or traceroute works fine, so I've ruled out DNS issues. I've also added the google DNS nameservers just to be sure. A third server that uses the exact same code doesn't have this problem, so it looks to be a problem on the "calling" end, not the "responding" end. Replacing the hostname with IP is not an option for this case.

Does anyone know how to solve this?

In my case, the trouble was that Apache get the DNS entries from /etc/resolv.conf when it starts. By the time I started my Apache, the network was not set yet. Restarting Apache (after networking is configured) solved the problem for me.

I explained the case in more details on my blog post http://diogomelo.net/blog/16/Warning-file_get_contents-php_network_getaddresses-getaddrinfo-failed-No-address-associated-with-hostname

The name lookup appears to fail whilst running within a cron job sometimes. I've only seen it with names in /etc/hosts, but I haven't tested DNS names.

I was seeing it with sending email and SMTP connection timeouts.

I don't know the exact cause, but in my case I got my SMTP code to connect to 127.0.0.1 instead of localhost and the problem went away.

This is because of connection limits on 2nd server, and I believe that you have set short time intervals for the cron job. As you know, servers control consecutive connections from each IP. You may choose a longer time interval to resolve this problem.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM