MacOS X の CentOS 仮想マシンで PHP を実行していますが、cURL リクエストの実行には一貫して 15 秒かかります。
$c = curl_init('https://graph.facebook.com');
curl_exec($c); // takes 15s to return...
echo curl_getinfo($c, CURLINFO_NAMELOOKUP_TIME); // 15.01 seconds
ただし、gethostbyname()は非常に高速です。
echo gethostbyname('graph.facebook.com'); // almost instant
また、ping
名前もほぼ瞬時に解決します。
デフォルトでは、そこに/etc/resolv.conf
しか含まれていなかっnameserver 192.168.1.1
たので、Google DNS サーバーを使用するように変更しました。
nameserver 8.8.8.8
nameserver 8.8.4.4
しかし、運が悪い。ヒントはありますか?
更新 1 : 以下は問題を修正します。
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
私が理解している限りでは、IPv4 と IPv6 の両方を解決しようとしていますが、IPv6 の解決は 15 秒のタイムアウト後に失敗します。
Linux マシンの構成ミスが原因ですか?
更新 2 :
dig graph.facebook.com aaaa
;; reply from unexpected source: 10.0.2.2#53, expected 192.168.1.1#53
;; reply from unexpected source: 10.0.2.2#60944, expected 192.168.1.1#53
;; reply from unexpected source: 10.0.2.2#53, expected 192.168.1.1#53
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> graph.facebook.com aaaa
;; global options: +cmd
;; connection timed out; no servers could be reached