2012-01-03 8 views
4

PHPでプレーンテキストWebページ(http://whatismyip.org/)に基本的なカールリクエストを実行すると、応答に10秒以上かかります。curl namelookup_time of 10秒

カールからの情報を見た後、namelookup_timeは10秒であることがわかります。コマンドライン(ターミナル)からcurlを実行すると、まったく同じ結果が得られます。

名前検索のために時間がかかります。は、私が読んだことは、PHPファイルがホストされているサーバー/コンピュータに関連している可能性が高いからです。ここで


は私のコードです:

[url] => HTTP://whatismyip.org 
[content_type] => text/plain 
[http_code] => 200 
[header_size] => 45 
[request_size] => 53 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 0 
[total_time] => 10.549943 
[namelookup_time] => 10.100938 
[connect_time] => 10.300077 
[pretransfer_time] => 10.300079 
[size_upload] => 0 
[size_download] => 14 
[speed_download] => 1 
[speed_upload] => 0 
[download_content_length] => -1 
[upload_content_length] => 0 
[starttransfer_time] => 10.549919 
[redirect_time] => 0 
[certinfo] => Array () 

答えて

2

私は上記の正確コードを使用して、これを繰り返すことはできません - 私の(Windowsの)マシン上のnamelookup_timeは戻ってくる:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "whatismyip.org"); 
curl_exec($ch); 

$ci = curl_getinfo($ch); 
print_r($ci); 

ここでの情報です0として、total_timeは約0.5である。 namelookup_timeは、OSがwhatismyip.orgのDNS名を解決するのにかかる時間なので、サーバのDNS設定を調べる必要があります。

設定されたプライマリDNSサーバーが存在しない/動作しない、タイムアウトが10秒です。これは、OSがプライマリDNSに接続しようとすると10秒間待つことを意味し、このタイムアウトが動作するセカンダリに落ちると、

設定済みのDNSサーバは何ですか?必要に応じて、8.8.8.8(Google)をプライマリDNSとして使用してみてください。サイドノートとして

、それはカールするフル URLを供給するので、http://whatismyip.org/だけではなくwhatismyip.orgを使用するのが最善である - これは、この特定の問題の原因であるように思えませんが。

+0

「システム環境設定>ネットワーク>詳細> DNS」で見た私のDNSサーバーは '192.168.1.1'です。 – Joshua

+0

ちょうどGooglesの「8.8.8.8」に変更しましたが、今は魅力的なように機能しています。ありがとうございます! – Joshua

1

おそらく、DNSサーバーの1つがタイムリーに返信していない可能性があります。すべてのIPの/etc/resolv.confにリストされているため、このコマンドを試してみてください:私が正しいだ場合

dig @IP.TO.DNS.SERVER google.com 

、お使いのDNSサーバーのいずれかが応答していません。

+0

私はあなたがOSXを使用しているのを見て、独自のDNS設定を指定しました。おそらくあなたのアップストリームルータ(DNSルックアップを行う)には、DNS設定に誤りがあります。 – jakobbg

+0

実際は '192.168.1.1'がデフォルトでしたが、あなたはそれが十分に速く応答していないと言ったように。 DaveRandomが言ったように '8.8.8.8'に変更すると、問題が修正されたようです。 +1 – Joshua

+0

素晴らしい。デフォルトのDNSサーバ(192.168.1.1)が返信に10秒以上かかる場合、そこに何か間違っているか、さらに "上流"になっています:-)。 – jakobbg

6
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); 

私の問題を解決しました。 IPV6には不明なバグがありました。

+0

これは、OSXの地元のUbuntuの不透明箱に私のために働いた。なぜ私は分からない。それがIPV6の問題であるとはどのように判断しましたか? – jfountain

+0

DNSエラーが発生しました。次に、いくつかのパラメータを変更しようとしました。 –

+0

共有PHPホスティングサービスでも私のために働きました。それは私のナッツを運転していた! –

関連する問題