我们看到一个非常奇怪的问题,PHP需要很长时间才能解决任何主机名,这种情况每5-10次尝试就会随机发生。我们使用了以下脚本来检查它。。。
<?php
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$starttime = $mtime;
$host = "google.com";
echo "looking up ".$host."<br/>";
$ip = gethostbyname($host)
//$ip = rtrim(`/usr/bin/dig $host A +short | /usr/bin/tail -1`);
echo "IP = " . $ip . "<br/>";
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$endtime = $mtime;
$totaltime = ($endtime - $starttime);
echo "<br/>Total Time: ".$totaltime." seconds";
?>
查找谷歌网站通常需要几毫秒,但5-10次尝试中就有一次需要10-15秒!我们看到任何域名都有同样的行为。注释行使用命令行中的dig来解决问题,当使用它时,我们看不到任何问题。这一切都很奇怪,因为他们使用的是同一个解析器。我们已经从命令行运行了这个PHP脚本,以使apache也脱离等式——同样的结果,所以这似乎纯粹是一个PHP问题。
PHP文档说gethostbyname()函数可能需要长达4秒的时间——我们看到的时间要比这长得多。我们实际上并没有使用这个函数——我们遇到的真正问题是,由于无法解析主机名,cURL调用超时。上面的脚本纯粹是为了评估我们是否有解决PHP问题的方法,我们确实这么做了!
在完全损失的情况下,自动取款机的谷歌搜索结果很少。即使是我们可以从哪里开始调查的指示也将不胜感激。
谢谢。
我将首先查看您的DNS正在解析的位置,DNS当前指向服务器的哪个位置?也许可以尝试将其更改为一个公共DNS服务器(8.8.8.8或4.2.2.2),看看您是否遇到同样的问题。