鍍金池/ 問(wèn)答/PHP  Linux/ 使用 php curl 如何加快速度?

使用 php curl 如何加快速度?

我是使用 php curl 與對(duì)方的數(shù)據(jù)庫(kù)做互動(dòng)

clipboard.png

一頁(yè)可能會(huì)跑三至五個(gè) curl 程式

clipboard.png

我用谷歌瀏覽器看到有一個(gè)項(xiàng)目會(huì)跑至少3秒左右
我在想是不是curl的問(wèn)題
因?yàn)槲铱雌渌际莔s單位...慢不到哪去

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

我把這段寫(xiě)了一個(gè)function
所以當(dāng)該頁(yè)需要哪一隻API我就會(huì)啟用它
因此有時(shí)候一頁(yè)可能會(huì)需要三至五個(gè)
花的時(shí)間特久
想問(wèn)說(shuō)有沒(méi)有其他種寫(xiě)法,能夠更快?!

回答
編輯回答
只愛(ài)你

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

2018年2月3日 14:34
編輯回答
來(lái)守候

慢,是因?yàn)橛蛎馕龅膯?wèn)題,可以使用curl的一個(gè)方法先將域名解析為對(duì)應(yīng)的IP

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

覺(jué)得自己寫(xiě)的不保險(xiǎn)可以?huà)靷€(gè)小庫(kù)咯……比如Guzzle這種……但你給的這些代碼真的看不出來(lái)啥,訪問(wèn)慢跟很多因素都有關(guān)系,不是你這一小段配置就能卡死的。。。

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

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

  1. 如果從執(zhí)行curl到發(fā)送dns請(qǐng)求(如果你的目標(biāo)主機(jī)名是個(gè)域名的話(huà))的時(shí)間過(guò)長(zhǎng),那就是curl啟動(dòng)太慢(我對(duì)php也不熟,不知道php執(zhí)行curl要不要fork)
  2. 如果從發(fā)送dns請(qǐng)求到得到dns回復(fù)的時(shí)間過(guò)長(zhǎng),那就是域名解析太慢,可以換個(gè)快一點(diǎn)的dns或者直接使用ip
  3. 如果從發(fā)送http請(qǐng)求開(kāi)始(可以從發(fā)送syn包開(kāi)始算)到得到http回復(fù)的時(shí)間過(guò)長(zhǎng),那就是對(duì)方查詢(xún)效率較低,不是你的問(wèn)題

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

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

2018年6月20日 23:24