Я паршу сайт и впервые столкнулся с непонятным багом — если запустить скрипт без задержки,
то запросы идут примерно 3 раза в секунду (я купил 200 прокси, каждый запрос с нового айпи)
и примерно с 10-15 запроса начинаются пропуски — скрипт ничего не собирает и как бы перескакивает на следующие запросы, т.е. появляются дыры в данных — в базу пишутся пустые строки.
Стоит добавить usleep(300000); и все становится нормально, собирает без разрывов. (это минимальная задержка которая убирает пустые строки).
Что это может быть?
логика парсера такова:
function getPageByUrl ($url)
....
require_once '/var/www/phpQuery.php';
запрос в базу с лимитом 5000 на получения списка урлов по которым нужно пройтись
//задержка
usleep(300000);
$pq = phpQuery::newDocument($pars);
....
далее вся логика и запись в мою базу
}
-= Serafim =-
Возможно, проблема с загрузкой страницы сайта или проблема с доступностью прокси в конкретный момент.
Dram
Сайт это превое что проверил — с ним проблем нет. Да, вы правы — скорее все дело в прокси. Они вероятно все хоть и разных городов но видать раздаются или контролируются одним узлом, где есть лимит…
-= Serafim =-
Dram: Сайт это превое что проверил — с ним проблем нет.
Бывает, что сайт недоступен в критические моменты нагрузки на сервер, если плохо оптимизировано и настроено. Потому проверка в какой-то момент не даст ничего. То есть будет парсить 1000 страниц нормально, а потом 1-2 будут недоступны.
Как вариант — складывать незагруженные страницы в отдельный файл и просто допаршивать в конце.
Вообще нет смысла в 99% случаев покупать пачку прокси, а достаточно одного — покупаете 1 впс и настраиваете свой прокси, где нет умирания и еще 10 человек не используют его в shared тарифе. Если уж парсить Яндекс, Гугл или что-то защищенное — тогда нужны пачки или просто сменить источник парсинга.
Выдачу Гугла, например, проще парсить из других поиковиков, которые используют его выдачу.
Dram
Я паршу сайт и впервые столкнулся с непонятным багом — если запустить скрипт без задержки,
то запросы идут примерно 3 раза в секунду (я купил 200 прокси, каждый запрос с нового айпи)
и примерно с 10-15 запроса начинаются пропуски — скрипт ничего не собирает и как бы перескакивает на следующие запросы, т.е. появляются дыры в данных — в базу пишутся пустые строки.
Стоит добавить usleep(300000); и все становится нормально, собирает без разрывов. (это минимальная задержка которая убирает пустые строки).
Что это может быть?
логика парсера такова:
-= Serafim =-
Возможно, проблема с загрузкой страницы сайта или проблема с доступностью прокси в конкретный момент.
Dram
Сайт это превое что проверил — с ним проблем нет. Да, вы правы — скорее все дело в прокси. Они вероятно все хоть и разных городов но видать раздаются или контролируются одним узлом, где есть лимит…
-= Serafim =-
Сайт это превое что проверил — с ним проблем нет.
Бывает, что сайт недоступен в критические моменты нагрузки на сервер, если плохо оптимизировано и настроено. Потому проверка в какой-то момент не даст ничего. То есть будет парсить 1000 страниц нормально, а потом 1-2 будут недоступны.
Как вариант — складывать незагруженные страницы в отдельный файл и просто допаршивать в конце.
Вообще нет смысла в 99% случаев покупать пачку прокси, а достаточно одного — покупаете 1 впс и настраиваете свой прокси, где нет умирания и еще 10 человек не используют его в shared тарифе. Если уж парсить Яндекс, Гугл или что-то защищенное — тогда нужны пачки или просто сменить источник парсинга.
Выдачу Гугла, например, проще парсить из других поиковиков, которые используют его выдачу.