Чуть допиленный пример с php.net почему-то отказывается работать, вместо ожидаемых 30 скачиваний страницы, получаю от 5 до 20. Пробовал выставлять таймауты соединений - безрезультатно. Код (Text): $cmh = curl_multi_init(); $tasks = array(); for ($i = 0; $i < 30; $i++) { $ch = curl_init('http://ya.ru'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); $tasks[$i] = $ch; curl_multi_add_handle($cmh, $ch); } $active = null; $result = array(); do { $mrc = curl_multi_exec($cmh, $active); var_dump($active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($active && ($mrc == CURLM_OK)) { if (curl_multi_select($cmh) == -1) { usleep(100); } do { $mrc = curl_multi_exec($cmh, $active); $info = curl_multi_info_read($cmh); if ($info['msg'] == CURLMSG_DONE) { $ch = $info['handle']; $url = array_search($ch, $tasks); $result[intval($ch)] = curl_multi_getcontent($ch); echo ($result[intval($ch)]) . '<br/>'; curl_multi_remove_handle($cmh, $ch); curl_close($ch); } } while ($mrc == CURLM_CALL_MULTI_PERFORM); } curl_multi_close($cmh); Пробовал вместо $mrc == CURLM_CALL_MULTI_PERFORM писать $active > 0 - тоже не помогло. Что я упускаю из виду?