需要批量的从接口取数据,上千个url,一个一个太慢了,因此想着试一下multi_curl方式,记录一下.
<?php
$urls = [
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=1" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=2" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=3" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=4" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=5" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=6" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=7" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=8" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=9" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=10" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=11" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=12" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=13" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=14" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=15" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=16" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=17" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=18" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=19" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=20" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=21" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=22" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=23" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=24" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=25" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=26" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=27" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=28" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=29" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=30" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=31" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=32" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=33" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=34" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=35" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=36" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=37" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=38" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=39" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=40" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=41" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=42" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=43" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=44" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=45" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=46" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=47" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=48" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=49" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=50" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=51" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=52" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=53" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=54" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=55" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=56" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=57" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=58" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=59" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=60" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=61" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=62" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=63" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=64" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=65" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=66" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=67" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=68" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=69" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=70" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=71" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=72" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=73" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=74" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=75" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=76" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=77" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=78" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=79" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=80" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=81" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=82" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=83" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=84" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=85" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=86" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=87" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=88" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=89" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=90" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=91" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=92" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=93" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=94" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=95" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=96" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=97" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=98" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=99" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=100" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=101" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=102" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=103" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=104" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=105" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=106" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=107" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=108" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=109" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=110" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=111" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=112" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=113" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=114" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=115" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=116" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=117" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=118" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=119" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=120" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=121" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=122" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=123" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=124" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=125" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=126" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=127" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=128" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=129" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=130" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=131" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=132" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=133" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=134" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=135" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=136" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=137" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=138" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=139" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=140" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=141" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=142" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=143" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=144" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=145" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=146" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=147" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=148" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=149" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=150" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=151" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=152" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=153" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=154" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=155" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=156" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=157" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=158" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=159" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=160" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=161" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=162" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=163" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=164" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=165" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=166" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=167" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=168" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=169" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=170" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=171" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=172" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=173" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=174" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=175" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=176" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=177" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=178" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=179" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=180" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=181" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=182" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=183" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=184" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=185" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=186" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=187" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=188" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=189" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=190" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=191" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=192" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=193" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=194" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=195" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=196" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=197" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=198" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=199" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=200" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=201" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=202" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=203" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=204" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=205" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=206" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=207" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=208" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=209" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=210" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=211" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=212" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=213" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=214" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=215" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=216" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=217" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=218" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=33690" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=33691" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=33692" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=33693" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=33694" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=33695" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=33696" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=33697" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=33698" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=33699" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=33700" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=33701" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=33702" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=37312" ,
"http://api.yangshuiping.com/car/type?appkey=xxxx&parent=37313" ,
] ;
$start_time = microtime ( true ) ;
batchCurl ( $urls , FCPATH . 'saveCarDetail.json' , true )
$end_time = microtime ( true ) ;
echo $end_time - $start_time ;
private function batchCurl ( $urls , $file_name_path = FCPATH . 'saveCarDetail.json' , $writeToFile = TRUE ) {
$queue = curl_multi_init ( ) ;
foreach ( $urls as $i = > $url ) {
$ch [ $i ] = curl_init ( ) ;
curl_setopt ( $ch [ $i ] , CURLOPT_URL , $url ) ;
curl_setopt ( $ch [ $i ] , CURLOPT_TIMEOUT , 2500 ) ;
curl_setopt ( $ch [ $i ] , CURLOPT_RETURNTRANSFER , 1 ) ;
curl_setopt ( $ch [ $i ] , CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0' ) ;
curl_setopt ( $ch [ $i ] , CURLOPT_HEADER , 0 ) ;
curl_setopt ( $ch [ $i ] , CURLOPT_NOSIGNAL , TRUE ) ;
curl_multi_add_handle ( $queue , $ch [ $i ] ) ;
}
$responses = array ( ) ;
do {
while ( ( $code = curl_multi_exec ( $queue , $active ) ) == CURLM_CALL_MULTI_PERFORM ) ;
} while ( $active ) ;
foreach ( $urls as $i = > $url ) {
$str [ $i ] = curl_multi_getcontent ( $ch [ $i ] ) ;
$responses [ $i ] = json_decode ( $str [ $i ] , TRUE ) [ 'result' ] ;
curl_close ( $ch [ $i ] ) ;
}
curl_multi_close ( $queue ) ;
if ( $writeToFile === TRUE ) {
$path_dir = pathinfo ( $file_name_path , PATHINFO_DIRNAME ) ;
if ( ! is_dir ( $path_dir ) ) {
$dirRes = mkdir ( $path_dir , 0777 , TRUE ) ;
if ( ! $dirRes ) {
$this - > outPutJson ( 500 , array ( ) , '创建目录,权限不足' ) ;
}
}
$res = file_put_contents ( $file_name_path , json_encode ( $responses ) ) ;
if ( $res ) {
$this - > outPutJson ( 200 , array ( ) , '写入文件成功!' ) ;
} else {
$this - > outPutJson ( 3002 , array ( ) , '写入文件失败!' ) ;
}
} else {
return $responses ;
}
}
结果如下:
批量curl:(get请求)
function multi_curl ( $urls )
{
$queue = curl_multi_init ( ) ;
foreach ( $urls as $i = > $url ) {
$ch [ $i ] = curl_init ( ) ;
curl_setopt ( $ch [ $i ] , CURLOPT_URL , $url ) ;
curl_setopt ( $ch [ $i ] , CURLOPT_TIMEOUT , 2500 ) ;
curl_setopt ( $ch [ $i ] , CURLOPT_RETURNTRANSFER , 1 ) ;
curl_setopt ( $ch [ $i ] , CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0' ) ;
curl_setopt ( $ch [ $i ] , CURLOPT_HEADER , 0 ) ;
curl_setopt ( $ch [ $i ] , CURLOPT_NOSIGNAL , TRUE ) ;
curl_multi_add_handle ( $queue , $ch [ $i ] ) ;
}
$responses = array ( ) ;
do {
while ( curl_multi_exec ( $queue , $active ) == CURLM_CALL_MULTI_PERFORM ) ;
} while ( $active ) ;
foreach ( $urls as $i = > $url ) {
$str [ $i ] = curl_multi_getcontent ( $ch [ $i ] ) ;
$responses [ $i ] = json_decode ( $str [ $i ] , TRUE ) [ 'data' ] ;
curl_close ( $ch [ $i ] ) ;
}
curl_multi_close ( $queue ) ;
return $responses ;
}
相关链接
public function rollCurl ( $urls , $delay = 5 )
{
$queue = curl_multi_init ( ) ;
$map = [ ] ;
foreach ( $urls as $url ) {
$ch = curl_init ( ) ;
curl_setopt ( $ch , CURLOPT_URL , $url ) ;
curl_setopt ( $ch , CURLOPT_TIMEOUT , 1 ) ;
curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 1 ) ;
curl_setopt ( $ch , CURLOPT_HEADER , 0 ) ;
curl_setopt ( $ch , CURLOPT_NOSIGNAL , true ) ;
curl_multi_add_handle ( $queue , $ch ) ;
$map [ ( string) $ch ] = $url ;
}
$responses = [ ] ;
do {
while ( ( $code = curl_multi_exec ( $queue , $active ) ) == CURLM_CALL_MULTI_PERFORM ) ;
if ( $code != CURLM_OK ) { break ; }
while ( $done = curl_multi_info_read ( $queue ) ) {
$error = curl_error ( $done [ 'handle' ] ) ;
if ( $error === 0 ) {
$responses [ ] = callback ( curl_multi_getcontent ( $done [ 'handle' ] ) , $delay ) ;
}
curl_multi_remove_handle ( $queue , $done [ 'handle' ] ) ;
curl_close ( $done [ 'handle' ] ) ;
}
if ( $active > 0 ) {
curl_multi_select ( $queue , 0.5 ) ;
}
} while ( $active ) ;
curl_multi_close ( $queue ) ;
return $responses ;
}