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