引子:在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';
$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;
reee鐘,即使最長http請求的執行時間。
後記:看到不少的人在blog上反應使用curl_multi_init的CPU過高的問題,其實,是可以添加usleep解決的。因為,如果資料沒有回傳curl_multi_exec會一直執行,消耗CPU資源。
以上就介紹了php curl批量發送http請求,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。