cURL还有一个高级特性——批处理句柄(handle)。这一特性允许你同时或异步地打开多个URL连接。
<?php
$urls = array (
'www.baidu.com',
'www.hao123.com',
'www.baidu.com'
);
// 创建cURL批处理句柄
$mch = curl_multi_init ();
if (!empty($urls)) {
foreach($urls as $k => $url){
// 创建cURL资源
$ch = curl_init();
//指定URL和适当的参数
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_multi_add_handle($mch, $ch );
// 数组存储url_init
$chs[$k] = $ch;
}
}
// 预定义一个状态变量
$active = null;
// 执行批处理句柄
do {
$mrc = curl_multi_exec($mch, $active );
} while($mrc == CURLM_CALL_MULTI_PERFORM );
while($active && $mrc == CURLM_OK ) {
if(curl_multi_select($mch ) != - 1) {
do{
$mrc = curl_multi_exec($mch, $active );
}while($mrc == CURLM_CALL_MULTI_PERFORM );
}
}
foreach($chs as $k => $c ){
if(curl_error ( $c ) == ''){
$temp = curl_multi_getcontent($c );
$arr[$k] = $temp;
// 关闭各个句柄
curl_multi_remove_handle($mch, $c );
curl_close($c);
} else{
echo 'failed!';
}
}
// 关闭各个句柄
curl_multi_close($mch );
print_r($arr);
?>