PHP Как сделать парсинг с паузой?

Добрый день.
Сегодня подумали спарсить категории авто с одного из сайтов, для чего написали простенький парсер:

<?php 
function cURL_AutonavigatorRu($level = false, $model_id = false){
    #http://www.autonavigator.ru
    $ch = curl_init('http://www.autonavigator.ru/dispatcher.pl');
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36"); 
    $headers = array
    (
        'Accept: application/json',
        'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4',
        'Accept-Encoding: gzip,deflate',
        'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'
    ); 

    curl_setopt($ch, CURLOPT_HTTPHEADER,$headers); 
    curl_setopt($ch, CURLOPT_REFERER, "http://www.autonavigator.ru/my/offer_add/");

    if($level == '1'){
        curl_setopt($ch, CURLOPT_POSTFIELDS, 'class=list&method=make&show_all=1&vehicle=car&type=used');
    }
    elseif($level == '2' && $model_id){
        curl_setopt($ch, CURLOPT_POSTFIELDS, 'class=list&method=model&show_all=1&vehicle=car&type=used&make_id='.$model_id);
    }
    elseif($level == '3' && $model_id){
        curl_setopt($ch, CURLOPT_POSTFIELDS, 'class=list&method=modif&show_all=1&model_id='.$model_id);
    }
    else{
        curl_setopt($ch, CURLOPT_POSTFIELDS, 'class=list&method=modif&show_all=1&model_id='.$model_id);
    }

    curl_setopt($ch, CURLOPT_ENCODING , "gzip");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    $result = curl_exec($ch);
    curl_close($ch);

    $json = json_decode(iconv("windows-1251","utf-8",$result), true);
    return $json['list'];
}


$ArrAuto = cURL_AutonavigatorRu('1');

foreach($ArrAuto as $auto) {

    echo $auto['value'].'<br>';


    //sleep(2);
    $AllModif1 = cURL_AutonavigatorRu('2',$auto["id"]);
    var_dump($AllModif1);
    echo '<br><br>----------------------------------<br><br>';

}

?>


Однако возникла небольшая проблема, парсер получает модификации только для первых 5-7 авто, т.е. видимо стоит ограничение на получение данных по времени.

Подскажите как обойти эту проблему?
  • Вопрос задан
  • 2961 просмотр
Пригласить эксперта
Ответы на вопрос 5
Вопрос и описание вопроса не сходятся.
Для первого sleep, для второго set_time_limit
Ответ написан
DmitryPRG
@DmitryPRG
PHP программист
set_time_limit ( int $seconds );

подробнее по ссылке:
php.net/manual/ru/function.set-time-limit.php

Эта функция не работает, если PHP работает в безопасном режиме.

Функцию необходимо указать 1 раз в самом начале скрипта.
Ответ написан
Комментировать
sleep() или usleep()
Ответ написан
Комментировать
guzzle+sleep+обработка исключений
Ответ написан
Комментировать
Taras_Serevann
@Taras_Serevann
веб-разработчик, автор
sleep(время в мс.);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы