Intereting Posts
Количество число тегов <li> в <ul> на сервере с использованием PHP доступ к сессии joomla в php – codeigniter изображение не извлекается из базы данных с использованием пути Вставка значений массива вставляет один идентификатор в базу данных mysql с использованием php и PDO отправьте форму на новой вкладке Выделить выбор по умолчанию из таблицы базы данных Zend Framework, передавая переменные для просмотра Как создать собственный URL-адрес в Yii Разделить строку на равные части с помощью PHP Laravel: метод загрузки в другом контроллере без изменения URL-адреса Написание и редактирование файла конфигурации PHP из HTML-формы? Magento – Как вы возвращаете результаты неограниченного статического блока CMS (с определенным «Идентификатором») на страницу CMS Как получить относительный каталог независимо от того, где он включен в PHP? Как кэшировать динамическую страницу PHP Как изменить каталог проектов Netbeans 7 по умолчанию?

Проверка ссылок с помощью Multi-Curl

Im строит функцию проверки ссылок, которая проверяет, имеет ли ссылка код 200/301/302.

Я хочу проверить около 1000 ссылок, поэтому я использовал функцию Multi-CURL, и я получаю все заголовки, коды, URL-адрес, на который перенаправлен URL-адрес.

Проблема заключается в том, что Multi-CURL выполняет параллельное добавление всех URL-адресов curl_multi_add_handle и возвращает полученные результаты и игнорирует остальные.

Я знаю из заголовка, в результате которого я вернулся, но я не знаю, какой URL-адрес привел его. Есть ли идентификатор, который URL-адрес я запросил у конкретного обработанного дескриптора (может быть, это связано с curl_multi_info_read)?

Здесь мой код:

$curls = $listofurls; $curl_arr = array(); $master = curl_multi_init(); for($i = 0; $i < $node_count; $i++) { $curl_arr[$i] = curl_init($curls[$i][0]); curl_setopt($curl_arr[$i],CURLOPT_FRESH_CONNECT,true); curl_setopt($curl_arr[$i],CURLOPT_CONNECTTIMEOUT,10); curl_setopt($curl_arr[$i],CURLOPT_HEADER,true); curl_setopt($curl_arr[$i],CURLOPT_CUSTOMREQUEST,'HEAD'); curl_setopt($curl_arr[$i],CURLOPT_RETURNTRANSFER,true); curl_setopt($curl_arr[$i],CURLOPT_NOBODY,true); curl_setopt($curl_arr[$i],CURLOPT_AUTOREFERER, 1); curl_setopt($curl_arr[$i],CURLOPT_TIMEOUT,30); curl_multi_add_handle($master, $curl_arr[$i]); } $finalresult = array(); do{ curl_multi_exec($master, $running); $info = curl_multi_info_read($master); if($info['handle']) { $finalresult[] = curl_multi_getcontent($info['handle']); curl_multi_remove_handle($master, $info['handle']); } $previousActive = $running; } while($running > 0); curl_multi_close($master); 

Цените Help.Thanx.

Я решил, что это верный заказ, который важно понять и совместить с результатом. Для кого-то, кто может найти ответ:

  $curls = $listofurls; $curl_arr = array(); $master = curl_multi_init(); for($i = 0; $i < $node_count; $i++) { $curl_arr[$i] = curl_init($curls[$i][0]); curl_setopt($curl_arr[$i],CURLOPT_FRESH_CONNECT,true); curl_setopt($curl_arr[$i],CURLOPT_CONNECTTIMEOUT,10); curl_setopt($curl_arr[$i],CURLOPT_HEADER,true); curl_setopt($curl_arr[$i],CURLOPT_CUSTOMREQUEST,'HEAD'); curl_setopt($curl_arr[$i],CURLOPT_RETURNTRANSFER,true); curl_setopt($curl_arr[$i],CURLOPT_NOBODY,true); curl_setopt($curl_arr[$i],CURLOPT_AUTOREFERER, 1); curl_setopt($curl_arr[$i],CURLOPT_TIMEOUT,30); curl_multi_add_handle($master, $curl_arr[$i]); } $finalresult = array(); $returnedOrder = array(); do{ curl_multi_exec($master, $running); $info = curl_multi_info_read($master); if($info['handle']) { $finalresult[] = curl_multi_getcontent($info['handle']); $returnedOrder[] = array_search($info['handle'], $curl_arr, true); curl_multi_remove_handle($master, $info['handle']); curl_close($curl_arr[end($returnedOrder)]); } $previousActive = $running; } while($running > 0); $res = array_combine($returnedOrder, $finalresult); curl_multi_close($master);