使用 php curl 如何加快速度?

我是使用 php curl 與對方的數據庫做互動

clipboard.png

一頁可能會跑三至五個 curl 程式

clipboard.png

我用谷歌瀏覽器看到有一個項目會跑至少3秒左右
我在想是不是curl的問題
因為我看其他都是ms單位...慢不到哪去

curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
  curl_setopt($ch, CURLOPT_TIMEOUT, 5);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

我把這段寫了一個function
所以當該頁需要哪一隻API我就會啟用它
因此有時候一頁可能會需要三至五個
花的時間特久
想問說有沒有其他種寫法,能夠更快?!

阅读 9.9k
4 个回答

慢,是因为域名解析的问题,可以使用curl的一个方法先将域名解析为对应的IP

// 如请求http://baidu.com, ping 出 IP 地址
$url = 'http://220.15.23.5/';
// 设置头信息(当用IP直接访问时,加这个如:https://baibu.com -> 220.15.23.5)
 curl_setopt($ci, CURLOPT_HTTPHEADER, array('Host:baibu.com'));

觉得自己写的不保险可以挂个小库咯……比如Guzzle这种……但你给的这些代码真的看不出来啥,访问慢跟很多因素都有关系,不是你这一小段配置就能卡死的。。。

谢邀。你可以抓个包分析一下,有多种可能

  1. 如果从执行curl到发送dns请求(如果你的目标主机名是个域名的话)的时间过长,那就是curl启动太慢(我对php也不熟,不知道php执行curl要不要fork)
  2. 如果从发送dns请求到得到dns回复的时间过长,那就是域名解析太慢,可以换个快一点的dns或者直接使用ip
  3. 如果从发送http请求开始(可以从发送syn包开始算)到得到http回复的时间过长,那就是对方查询效率较低,不是你的问题

还可以用chrome发送同样的请求,看时间上有什么区别。

当然还有可能有别的原因,比如网络原因,如果你网络状况不好的话当然也会慢了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题