Как ускорить работу парсера?

Все привет! Пишу парсер магазина, но что-то он слишком долго как по мне работает.
Алгоритм парсинга следующий:
Количество страниц категорий мне известно, поэтому прохожусь по ним через for, все ссылки на товары записываю в массив, далее прохожусь по нему через foreach, получаю нужные данные - картинки сохраняю в папку, характеристики пишу в csv.
Скрипт запускаю открытием страницы на локальном сервере, т.е весь код пишу в index.
Такая логика обрабатывает 1500 страниц за ~350 секунд. А что, если сайт на 30 000 страниц, как в таком случае быть? Подозреваю, что работу можно разбить на несколько итераций, например сначала сохранить массив ссылок, отдельно по нему проходиться, но не хочу особо костылить, поэтому спрашиваю вашего совета.
В работе использую phpquery.
  • Вопрос задан
  • 1228 просмотров
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Используйте несколько потоков и асинхронную обработку.
curl_multi_init() - в помощь!
Ответ написан
Комментировать
Exploding
@Exploding
wtf?
~4-5 товаров / сек - это ахренеть как довольно быстро. Видимо мало картинок или вы миниатюры сохраняете только... В принципе основное время уходит на скачивание полноразмерных изображений, а все остальное так... пыль))
Я как-то помню качественно парсил качественный магазин, в котором на каждом товаре ~3-6 фоток в приличном разрешении, при ~15Мбитах получалось в среднем 2-4 сек/товар, т.к. получил html, разобрал и распихал данные по запросам, и скачиваю большие фотки, получил фотки, и каждую програмно:
- уникализировал
- налепил ватермарки (вообще нагло конечно, но так клиент захотел:))
- сгенерил миниатюры
- ну и плюс время на сохранение на диск (hdd 7200rpm)
Так что вы со своими 350 секундами радуйтесь! Наверно... т.к. скорее всего вы не настолько качественно парсите...
Ответ написан
Ваш ответ на вопрос

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

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