Проблема с многопоточным запросом Curl

125
15 декабря 2019, 05:40

у меня есть скрипт который выполняет многопоточные Сurl запросы с целью проверить работоспособность страницы. Но иногда он работает некорректно и не выводит header страницы. Код скрипта.

 $cheak_url = array(
  array(
    "url",
    "status",
    "content"
  )
);
$urls = array();
for ($i=0; $i < $Count_of_pages; $i++) { 
    $urls[$i]=$cheak_url[$i]["url"];
}
 $mh = curl_multi_init();
$chs = array();
foreach ( $urls as $url ) {
    $chs[] = ( $ch = curl_init() );
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    curl_setopt( $ch, CURLOPT_HEADER, 1 );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,20);
    curl_multi_add_handle( $mh, $ch );
}
   $prev_running = $running = null;
   $num=0;
   do {
    curl_multi_exec( $mh, $running );
    if ( $running != $prev_running ) {
        // получаю информацию о текущих соединениях
        $info = curl_multi_info_read( $mh );
        if ( is_array( $info ) && ( $ch = $info['handle'] ) ) {

            $cheak_url[$running][content] = curl_multi_getcontent( $ch );

        }

        // обновляю кешируемое число текущих активных соединений
        $prev_running = $running;
    }
} while ( $running > 0 );

foreach ( $chs as $ch ) {
    curl_multi_remove_handle( $mh, $ch );
    curl_close( $ch );
}
curl_multi_close($mh);

Поеснение:
В массив $cheak_url в url заносятся адреса страниц.
$Count_of_pages - переменная обозначающая количества страниц.
Если узнать значение массива через var_dump он показывает что значение элемента не заполнено.

READ ALSO
Позиционирование в файле c++

Позиционирование в файле c++

Создать функцию, которая с использованием функций позиционирования в потоке изменяет содержимое файла "arraydat", переданного ей в качестве...

161
Как преобразовать UTF-8 в Кириллицу в Visual Studio 2017?

Как преобразовать UTF-8 в Кириллицу в Visual Studio 2017?

Изначально файл программы набирался в Notepad++(по умолчанию utf-8)Много разрозненного русского текста

132
создать 2 int числа из одного float

создать 2 int числа из одного float

Необходимо создать 2 числа из одного с плавающей точкойfloat 15

149