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重新编译,这显然是在共享平台上无法做到的。