相信許多人對php手冊中語焉不詳的curl_multi一族的函數頭疼不已
•curl_multi_add_handle
•curl_multi_close
•curl_multi_exec
•curl_multi_getcontent
•curl_multi_info_read
•curl_multi_init
•curl_multi_remove_handle
•curl_multi_select
一般來說
步驟總結如下
第一步
第二步
這一步需要注意的是
第三步
第四步
第五步
第六步
這裡有一個網上找的簡單例子
*
Here
*/
$connomains = array(
"
"
"
);
$mh = curl_multi_init();
foreach ($connomains as $i => $url) {
$conn[$i]=curl_init($url);
curl_setopt($conn[$i]
curl_multi_add_handle ($mh
}
do { $n=curl_multi_exec($mh
foreach ($connomains as $i => $url) {
$res[$i]=curl_multi_getcontent($conn[$i]);
curl_close($conn[$i]);
}
print_r($res);
整個使用過程差不多就是這樣
現在我們來改進它
把上面do的那段改成下面這樣
do {
$mrc = curl_multi_exec($mh
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active and $mrc == CURLM_OK) {
if (curl_multi_select($mh) !=
do {
$mrc = curl_multi_exec($mh
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
因 為$active要等全部url數據接受完畢才變成false
另外
控制每一個請求的超時時間
curl_setopt($ch
判斷是否超時了或者其他錯誤
注意
例如今天我發現在php
而恰好這個版本的php中strip_tags函數對含二進制的數據處理的不好
From:http://tw.wingwit.com/Article/program/PHP/201311/21124.html