0, 
CURLOPT_RETURNTRANSFER=>1, 
); 
// add curl options to each handle 
foreach($res as $k=>$row){ 
$ch{$k} = curl_init(); 
$options[CURLOPT_URL] = $row['url']; 
curl_setopt_array($ch{$k}, $options); 
$handles[$k] = $ch{$k}; 
} 
$mh = curl_multi_init(); 
foreach($handles as $k => $handle){ 
curl_multi_add_handle($mh,$handle); 
//echo "
adding handle {$k}";  }  $running_handles = null;  //execute the handles  $cme=null; $status=null; do {  $status_cme = curl_multi_exec($mh, $running_handles);  } while ($cme == CURLM_CALL_MULTI_PERFORM);  while ($running_handles && $status_cme == CURLM_OK) {  if (curl_multi_select($mh) != -1) {  do {  $status_cme = curl_multi_exec($mh, $running_handles);  // echo "
''threads'' running = {$running_handles}";  } while ($status == CURLM_CALL_MULTI_PERFORM);  }  }  foreach($res as $k=>$row){  $res[$k]['error'] = curl_error($handles[$k]);  if(!empty($res[$k]['error']))  $res[$k]['data']  = '';  else  $res[$k]['data']  = curl_multi_getcontent( $handles[$k] );  // get results  // close current handler  curl_multi_remove_handle($mh, $handles[$k] );  }  curl_multi_close($mh);  return $res; // return response  }  $res = array(  "11"=>array("url"=>"http://api.211.100.56.140.xip.io/shows.json/263?appKey=strKfLS2Hecp"),  "12"=>array("url"=>"http://api.211.100.56.140.xip.io/shows.json/263?appKey=strKfLS2Hecp"),  );  print_r(multiCurl($res));  ?>