Как оптимизировать процесс парсинга данных с веб-сайтов?
У меня есть несколько сайтов с которых нужно постоянно парсить данные.
Например, у меня есть 20 сайтов, когда последний сайт обработан парсером, нужно начинать с начала. Вопрос в том, как наилучшим образом сделать это в PHP? Потому что я новичок в этом и опыта в этом никакого...
Я боюсь ситуации, когда сервер будет перегружен, или скрипт парсинга (процесс) будет случайно остановлен ... Как наилучшим образом справиться с этими ситуациями?
Берешь любую балалайку для очереди вроде beanstalkd или gearman, пишешь какой-то главный скрипт, который запускает парсинг с входной точки (первой страницы или страниц), ссылки извлеченные из нее добавляются в эту же очередь и где-то сохраняются для блэклистинга (чтобы не парсились дважды). Примерно так работает scrapy
по своему опыту могу сказать что если сайты небольшие то на пыхе еще можно делать, но для больших сайтов нужно что-то другое, лично я выбрал для такого дела python+scrapy
Ну тут все просто, делаете очередь в базе из 20 записей, каждый раз когда переходите к новому сайту, запрашиваете одну запись отсортированную по дате последнего обновления, парсите сайт, по окончании апдейтите дату обновления для записи, и забираете следующую запись.
Ну и соответственно если сервер перегрузят или остановят парсер, при перезапуске он всегда возьмет следующий сайт.