PHP. Многопоточность в CURL

Задача: скачать несколько ссылок одновременно через curl.
Решается через curl_multi_init.

На входе имеем массив ссылок и подаём в нашу функциюgetMulti.
Результатом будет массив из ссылок и соответствующего содержимого.

$urls = array(
	"http://google.ru",
	"http://ya.ru",
	"http://mail.ru",
);
$res = getMulti($urls);
function getMulti($urls)
{
	$mh = curl_multi_init();
	$conn = [];
	$result = [];

	foreach ($urls as $i => $url) {
		$conn[$i] = curl_init($url);
		curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1); // возвращать результат
		curl_setopt($conn[$i], CURLOPT_FOLLOWLOCATION, 1); // если будет редирект - перейти по нему
		curl_setopt($conn[$i], CURLOPT_HEADER, 0); // не возвращать http-заголовок
		curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT, 10); // таймаут соединения
		curl_setopt($conn[$i], CURLOPT_TIMEOUT, 10); // таймаут ожидания
		curl_setopt($conn[$i], CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($conn[$i], CURLOPT_SSL_VERIFYHOST, false);
		curl_multi_add_handle($mh, $conn[$i]);
	}

	do {
		$status = curl_multi_exec($mh, $active);
		$info = curl_multi_info_read($mh);
		if (false !== $info) {
			//var_dump($info);
		}
	} while ($status === CURLM_CALL_MULTI_PERFORM || $active);

	foreach ($urls as $i => $url) {
		$result[$url] = curl_multi_getcontent($conn[$i]);
		curl_multi_remove_handle($mh, $conn[$i]); // удаляем поток из мультикурла
		curl_close($conn[$i]); // закрываем отдельное соединение (поток)
	}

	return $result;
}