php - 从 php curl 比通过 putty curl 需要更多时间

标签 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);

这是我在 putty 中使用的 curl 命令:

curl --header "Authorization: Bearer xxxxxx" https://www.googleapis.com/oauth2/v2/userinfo

可能是什么问题?

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

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

注意事项 3: dig www.googleapis.com 返回以下内容:

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> www.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5273
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.googleapis.com. IN A

;; ANSWER SECTION:
www.googleapis.com. 1536 IN CNAME googleapis.l.google.com.
googleapis.l.google.com. 172 IN A 216.58.218.170

;; Query time: 0 msec
;; SERVER: 10.0.80.11#53(10.0.80.11)
;; WHEN: Wed Sep 9 14:35:04 2015
;; MSG SIZE rcvd: 89

最佳答案

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

https://stackoverflow.com/a/17816201/2691879

设置这个选项,解决问题:

curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);

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

关于php - 从 php curl 比通过 putty curl 需要更多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32481611/

相关文章:

json - 发送 JSON/XML/TXT/CSV 文件到 ElasticSearch

php - preg_match 解析html标签并插入变量

php - 命名约定

php - 我如何按优先级 ID 列表对 mysql 结果进行排序?

php - 从 PHP 生成 SSH key 对

c++ - 添加 curl 库 C++

php - 将参数传递给 PDO 的好方法

php - Mysql - 在视口(viewport)内查找具有坐标的项目

java - 简单的 curl 从 linux 命令行失败

php cURL 登录jsp网站返回HTML