0

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";

?>

google.comを検索するには、ほとんどの場合ミリ秒かかりますが、5〜10回の試行に1回は、10〜15秒かかります。どのドメイン名でも同じ動作が見られます。コメント化された行は、コマンドラインからのdigを使用して解決しますが、これを代わりに使用すると、問題は発生しません。彼らは同じリゾルバを使用しているので、これはすべて非常に奇妙です。このPHPスクリプトをコマンドラインから実行して、方程式からapacheを削除しました。同じ結果であるため、純粋にPHPの問題のようです。

PHPのドキュメントによると、gethostbyname()関数には最大4秒かかる可能性があります。これよりもかなり長くなっています。実際にはこの関数を使用していません。実際の問題は、ホスト名を解決できないためにcURL呼び出しがタイムアウトすることです。上記のスクリプトは、PHPで問題を解決できるかどうかを評価するためのものです。

全損atmで-グーグルはほとんど現れませんでした。調査を開始する可能性のある場所へのポインタでさえ、大いにありがたいです。

ありがとう。

4

1 に答える 1

0

DNS が解決している場所を確認することから始めます。現在、DNS はサーバー上でどこを指していますか? パブリック DNS サーバー (8.8.8.8 または 4.2.2.2) のいずれかに変更してみて、同じ問題が発生するかどうかを確認してください。

于 2013-02-06T17:36:56.500 に答える