@siroper

Как запустить phpquery с ajax через cron?

Здравствуйте.

Подскажите пожалуйста, кто сталкивался. У меня стоит парсер поставщика интернет-магазина, в котором порядка 200 категорий и 8 000 товаров.
Поставщик на столько хреновый что не предоставляет выгрузки, об этом даже и не будем говорить.

Суть в том, что я сделал парсер на phpQuery (+ curl авторизация), парсит достаточно долго, на все про все уходит около часа. Соответсвенно о cron не может быть и речи т.к. если использовать без ajax, то скрипт уйдет в 504 gateway time-out

Но все это дело запускается только если открыть страницу в браузере (начинает работать<script>ajax.....</script>). Но как это дело запустить через cron?
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ответы на вопрос 2
dmitrybascacov
@dmitrybascacov
Кодим и декодим, а иногда кино смотрим
В теории должно работать так:
- создаешь скипт
- ставишь на крон через php path/to/file.php

Если какие-то проблемы при выполнении, то ставишь больше время выполнения скрипта
Ответ написан
@oxidmod
В cli запросто можно отключить ограничение времени работы.
ajax нужно заменить на curl или даже лучше multi-curl. Можно взять готовую обертку типа Guzzle
Если работа идет долго, то стоит добавить некий лок, чтоб не стартовать два процесса параллельно (в самом начале работы скрипт проверяет создан ли файл, например .started, если нет, то создает его и продолжает работу. Если же файл уже есть, то скрипт ничего не делает и выходит. В конце работы, скрипт файлик удаляет, чтоб новый процесс смог стартануть когда будет необходимо.)
Также можно в тот файлик писать например дату и время старта (или просто timestamp) и при каждой попытке стартовать проверять как давно стартанул предыдущий процесс и, например, слать письмо на почту, если процесс завис
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы