PHP中file_get_contents中IPv4回退之前AAAA查找失败时超时10秒


10 second timeout on failing AAAA lookup before IPv4 fallback in file_get_contents in PHP

PHP或其子系统在返回IPv4并成功之前,将尝试获取AAAA查找的请求延迟10秒。我有15个以上的请求,所以这个问题只需150秒以上,只需等待IPv6查找失败。除了本地链路之外,客户端和远程主机都没有IPv6设置。

file_get_contents( $ipv4_address); # works in less than a second
file_get_contents( $fqdn_address); # takes ten–eleven seconds

我看到的唯一可行的方法是在将主机名发送到file_get_contents()之前使用gethostbyname( $fqdn_address );替换主机名。我希望有一个更优雅的解决方案。

附言:这是在一个共享主机上,所以我对服务器配置和设置的控制很小。

您可以尝试使用curl,它可以强制ipv4

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

否则,它看起来像是要修复的服务器端设置或php重新编译,这显然是在共享平台上无法做到的。