鍍金池/ 問答/PHP  Linux/ 使用 php curl 如何加快速度?

使用 php curl 如何加快速度?

我是使用 php curl 與對方的數(shù)據(jù)庫做互動

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我就會啟用它
因此有時候一頁可能會需要三至五個
花的時間特久
想問說有沒有其他種寫法,能夠更快?!

回答
編輯回答
只愛你

CURL速度慢可能與Expect:100-Continue有關(guān),可以修改下代碼試驗一下:
http://www.laruence.com/2011/...

2018年2月3日 14:34
編輯回答
來守候

慢,是因為域名解析的問題,可以使用curl的一個方法先將域名解析為對應(yīng)的IP

// 如請求http://baidu.com, ping 出 IP 地址
$url = 'http://220.15.23.5/';
// 設(shè)置頭信息(當用IP直接訪問時,加這個如:https://baibu.com -> 220.15.23.5)
 curl_setopt($ci, CURLOPT_HTTPHEADER, array('Host:baibu.com'));
2018年8月23日 20:26
編輯回答
夏木

覺得自己寫的不保險可以掛個小庫咯……比如Guzzle這種……但你給的這些代碼真的看不出來啥,訪問慢跟很多因素都有關(guān)系,不是你這一小段配置就能卡死的。。。

2018年5月7日 00:41
編輯回答
臭榴蓮

謝邀。你可以抓個包分析一下,有多種可能

  1. 如果從執(zhí)行curl到發(fā)送dns請求(如果你的目標主機名是個域名的話)的時間過長,那就是curl啟動太慢(我對php也不熟,不知道php執(zhí)行curl要不要fork)
  2. 如果從發(fā)送dns請求到得到dns回復(fù)的時間過長,那就是域名解析太慢,可以換個快一點的dns或者直接使用ip
  3. 如果從發(fā)送http請求開始(可以從發(fā)送syn包開始算)到得到http回復(fù)的時間過長,那就是對方查詢效率較低,不是你的問題

還可以用chrome發(fā)送同樣的請求,看時間上有什么區(qū)別。

當然還有可能有別的原因,比如網(wǎng)絡(luò)原因,如果你網(wǎng)絡(luò)狀況不好的話當然也會慢了。

2018年6月20日 23:24