Sometime with arrays and loops (i.e. for or do while or foreach) curl_multi_init loses some hits, to work around this problem it is necessary to divide the loop into two parts: the start with key number zero and than, all the rest. In this way the curl_multi_init doesn't lose any hits. I did a lot of test and it seems to work well enough. <?phpfunction set_option($x, $y){curl_setopt($x, CURLOPT_URL, $y);curl_setopt($x, CURLOPT_HEADER, 0);curl_setopt($x, CURLOPT_FOLLOWLOCATION, TRUE);curl_setopt($x, CURLOPT_RETURNTRANSFER, TRUE);curl_setopt($x, CURLOPT_ENCODING, "gzip,deflate");}$nodes = array('http://php.net/manual/it/function.curl-multi-add-handle.php', 'http://php.net/manual/en/function.curl-multi-init.php', 'http://php.net/manual/en/function.curl-multi-setopt.php');$node_count = count($nodes);$curl_arr = array();$master = curl_multi_init();$curl_arr[0] = curl_init($nodes[0]); set_option($curl_arr[0], $nodes[0]); curl_multi_add_handle($master, $curl_arr[0]); $i = 1;do { if ($i!==0){ $curl_arr[$i] = curl_init($nodes[$i]); set_option($curl_arr[$i], $nodes[$i]); curl_multi_add_handle($master, $curl_arr[$i]); }$i++; }while($i < $node_count);$running = NULL;do { curl_multi_exec($master,$running);} while($running);$results = array();$q = 0;do{ $results[$q] = curl_multi_getcontent($curl_arr[$q]); curl_multi_remove_handle($master, $curl_arr[$q]);$q++; }while($q < $node_count);foreach($results as $value){ echo $value;}?>