Мультипоточное скачивание через CURL
<?php
//В php5 можно скачивать данные в несколько потоков
//инициализация
$ch1 = curl_init();
$ch2 = curl_init();
//адреса страниц (файлов) и опции
curl_setopt($ch1, CURLOPT_URL, 'kmx.ru');
curl_setopt($ch1, CURLOPT_HEADER, 1);
curl_setopt($ch2, CURLOPT_URL, 'wen.ru');
curl_setopt($ch2, CURLOPT_HEADER, 1);
//мульти загрузка
$mh = curl_multi_init();
//добавляем ресурсы в мультизагрузку
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
//число запущенных загрузок
$running=null;
//грузим!
do {
curl_multi_exec($mh, $running);
} while ($running > 0);
//освобождаем ресурсы и память
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
?>