首頁 > 後端開發 > php教程 > php curl批量發送http請求

php curl批量發送http請求

WBOY
發布: 2016-07-29 09:14:21
原創
1438 人瀏覽過

引子:在Android4.0開發中,發送Http請求已經不允許在主程序中執行了,必須在執行緒執行。原因在於Http介面回應時間有可能阻塞主進程事件監聽(對於.Net開發,其實也是如此)。但是,由於PHP並沒有多執行緒的概念,那麼,如何高效率在PHP中執行多次http請求呢?答案是使用curl_multi_init,由此,我做了一個實驗。

以下是模擬請求的http接口,程式碼很簡單,透過get傳入的參數time,控制了sleep的時間。

$s_time=intval($_GET['time']);
sleep($s_time);
echo 'hello';
登入後複製

接下來僅使用curl_init,代碼如下:

$start=microtime(true);
for($i=1;$i<=5;++$i)
{
	$ch=curl_init("http://test.binbin.com/curl/test.php?time={$i}");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_exec($ch);
}
$end=microtime(true);
echo $end-$start;
登入後複製

執行的時間約為15秒,是所有sleep時間總和,現在,來看看使用了curl_multi_init的時間

reee鐘,即使最長http請求的執行時間。

後記:看到不少的人在blog上反應使用curl_multi_init的CPU過高的問題,其實,是可以添加usleep解決的。因為,如果資料沒有回傳curl_multi_exec會一直執行,消耗CPU資源。

以上就介紹了php curl批量發送http請求,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板