Мультизапрос
Существуют задачи в которых нужно выполнить много запросов к сайту и получить контент. Обычная функция file_get_contents() будет очень долго отрабатывать, если в цикле будет 10 запросов.
Данная функция существенно ускоряет скорость обработки запросов. Она принимает массив ссылок. И возвращает содержимое страницы.
function multi_request($urls = null) { $curly = array(); $result = array(); $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; }
Добавить комментарий