Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Мультипоточное скачивание из сети с использованием curl на PHP
В стандартной библиотеке CURL, есть набор функций curl_multi_*, как раз и предназначенных для одновременного скачивания данных с нескольких адресов.
Пример использования curl_multi:
function multi_request($urls)
{
$curly = [];
$result = [];
$mh = curl_multi_init();
foreach ($urls as $id => $url) {
$curly[$id] = curl_init();
curl_setopt($curly[$id], CURLOPT_URL, $url);
curl_setopt($curly[$id], CURLOPT_HEADER, 0);
curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curly[$id], CURLOPT_TIMEOUT, 30);
curl_setopt($curly[$id], CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curly[$id], CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curly[$id], CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curly[$id], CURLOPT_USERAGENT,"Mozilla/5.0(Windows;U;WindowsNT5.1;ru;rv:1.9.0.4)Gecko/2008102920AdCentriaIM/1.7Firefox/3.0.4");
//curl_setopt($curly[$id], CURLOPT_COOKIEJAR,'cookies.txt');
//curl_setopt($curly[$id], CURLOPT_COOKIEFILE,'cookies.txt');
curl_multi_add_handle($mh, $curly[$id]);
}
$running = null;
do {
curl_multi_exec($mh, $running);
} while($running > 0);
foreach($curly as $id => $c) {
$result[$id] = curl_multi_getcontent($c);
curl_multi_remove_handle($mh, $c);
}
curl_multi_close($mh);
return $result;
}
В данную функцию нужно передавать массив url. Вернется же массив HTML-кодов страниц по заданным url.
.
Прокомментировать/Отблагодарить