<?php function multiRequest($data, $options = array()) {  // array of curl handles**$curly = array();  // data to be returned**$result = array();   // multi handle**$mh = curl_multi_init();   // loop through $data and create curl handles  // then add them to the multi-handle**foreach ($data as $id => $d) { * **$curly[$id] = curl_init(); * **$url = (is_array($d) && !empty($d['url'])) ? $d['url'] : $d;* **curl_setopt($curly[$id], CURLOPT_URL,            $url);* **curl_setopt($curly[$id], CURLOPT_HEADER,         0);* **curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1);     // post?* **if (is_array($d)) {* * **if (!empty($d['post'])) {* * * **curl_setopt($curly[$id], CURLOPT_POST,       1);* * * **curl_setopt($curly[$id], CURLOPT_POSTFIELDS, $d['post']);* * **}* **} * **// extra options?* **if (!empty($options)) {* * **curl_setopt_array($curly[$id], $options);* **}** **curl_multi_add_handle($mh, $curly[$id]);**} **// execute the handles**$running = null;**do {    curl_multi_exec($mh, $running);  } while($running > 0);    // get content and remove handles**foreach($curly as $id => $c) {* **$result[$id] = curl_multi_getcontent($c);* **curl_multi_remove_handle($mh, $c);**}   // all done**curl_multi_close($mh);*  return $result;} ?>