来自php的curl比curl通过putty花费更多时间

Ada*_*yai 5 php curl

我正在尝试向googleapis发送curl请求,以获取用户信息.当我使用php脚本发送cURL请求时,需要5秒才能完成,但是,当我尝试使用curl命令直接从服务器发送相同的请求时,结果立即返回.

这是我使用的php脚本:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.googleapis.com/oauth2/v2/userinfo");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Authorization: Bearer '.$accessToken));
$output=curl_exec($ch);
Run Code Online (Sandbox Code Playgroud)

这是我用过putty的curl命令:

curl --header "Authorization: Bearer xxxxxx" https://www.googleapis.com/oauth2/v2/userinfo
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?

注意: php脚本在我通过putty发出curl命令的同一台服务器上运行

注意2:这可能是某种DNS查找问题吗?首先,通过命令行运行相同的命令也需要大约5秒钟才能完成,因为www.googleapis.com不在我们的DNS服务器中.从那时起,我们手动添加它,命令行功能运行得更快.PHP使用什么样的DNS信息,如果我更新服务器上的DNS信息,它是否会自动更新为PHP?

注3: 挖掘www.googleapis.com返回以下内容:

; << >> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 << >> www.googleapis.com
;; 全局选项:+ cmd
;; 得到答案:
;; - >> HEADER << - 操作码:QUERY,状态:NOERROR,id:5273
;; 旗帜:qr rd ra; QUERY:1,答案:2,授权:0,附加:0

;; 问题部分:
; www.googleapis.com.在一个

;; 答案部分:
www.googleapis.com.1536 IN CNAME googleapis.l.google.com.
googleapis.l.google.com.172 IN A 216.58.218.170

;; 查询时间:0毫秒
;; 服务器:10.0.80.11#53(10.0.80.11)
;; 时间:2015年9月9日星期三14:35:04
;; MSG SIZE rcvd:89

Ada*_*yai 2

在这里找到了问题的答案:

/sf/answers/1247134101/

设置此选项,可以解决问题:

curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
Run Code Online (Sandbox Code Playgroud)

我仍然不太明白为什么以及如何发生这种情况,所以如果有人愿意在另一个答案中向我解释它以及上述解决方案,我会将其标记为正确答案。