Точка входа в cron Magento - это скрипт cron.php
в корне Magento.Вам нужно будет настроить запись crontab для ОС, попав в этот скрипт, который, как вы, похоже, уже сделали.
Как работает cron
Каждый раз, когда cron.php
При выполнении сценария происходит три вещи:
- Расписание : Magento анализирует объединенные файлы
config.xml
для записей <config><crontab>...</crontab></config>
jobs
, читая их элементы cron_expr
для получения подробной информации окак часто они должны быть запущены.Затем Magento заполняет таблицу расписания cron заданиями, которые должны быть выполнены в будущем, вместе с отметками времени, когда они должны быть выполнены.Степень, в которой Magento делает это, настраивается администратором. - Execute : Magento читает таблицу расписания cron для заданий, которые необходимо выполнить в эту секунду, и заданий, которые должны иметьуже выполнены, то есть с отметками времени в прошлом, которые не истекли.Ограничение срока действия также является параметром, который настраивается администратором.
- Очистка : Magento просматривает таблицу расписания, удаляя задания, которые были выполнены или пропущены (из-за крайнего срока).
Дублировать пробеги?
Вы подняли интересный вопрос.Что произойдет, если в Magento запланирован 10-минутный хрон, но cron.php
гарантированно будет срабатывать только каждые 15 минут.Похоже, что Magento будет запускать ваши задания Magento дважды, в некоторых случаях:
- ЧЧ: 00 -> ЧЧ: 50 и ЧЧ: 00
- ЧЧ: 15 -> ЧЧ: 10
- ЧЧ: 30 -> ЧЧ: 20 и ЧЧ: 30
- ЧЧ: 45 -> ЧЧ: 40
Я только прочитал код, и вот что, похоже, происходит.Лучший способ выяснить это, конечно, запустить и выяснить.Если вы хотите избежать этой проблемы, в большинстве случаев увеличьте частоту выполнения cron.php
до каждых 5 минут, что мы и делаем.
Тестирование кода
Если вы хотите проверить, действительно ли ваш cron работает без ожидания возраста, задайте cron_expr
для выполнения каждую минуту или очистите таблицу расписания cron, затем дважды нажмите cron.php
(один раз, чтобы сгенерировать расписание, и сновачтобы выполнить задание).
Если вы хотите просто проверить работоспособность вашей модели, вы можете установить тестовый сценарий (описанный в https://www.nicksays.co.uk/testing-magento-modules), и запустить его.
ВашВопрос вызвал сообщение в блоге: https://www.nicksays.co.uk/dissecting-the-magento-cron-system:)