В сегодняшнем посте мы вкратце рассмотрим работу Cron в Мадженто.
Система Cron в Magento используется для выполнения задач на постоянной основе и по расписанию. Основным файлом для запуска планировщика задач является файл cron.php в корне папки Magento-сайта. Чтобы запустить Cron, вам нужно поставить этот файл в задание планировщика на веб-сервере. И настроить частоту его запуска.
Рекомендуется устанавливать cron для Magento, поскольку с его помощью движок решает различные задачи: например, делает очистку логов, рассылает информационные бюллетени, рассылает на почту уведомления о новых заказах и т.п
Чтобы добавить cron задание в свой модуль, добавьте соответствующие xml-инструкции в файл config.xml
модуля:
<default> <crontab> <jobs> <job_unique_name> <schedule> <cron_expr>*/15 * * * *</cron_expr> </schedule> <run> <model>module/observer::cronMethod</model> </run> </job_unique_name> </jobs> </crontab> </default>
job_unique_name
– любое уникальное имя для задачиcron_expr
– здесь указывается любое допустимое выражение cron (частота)module/observer
– действующая Модель в модулеcronMethod
– это функция внутри этой Модели
В примере мы используем выражение */15 * * * *
для нода cron_expr
. Оно означает, что cron нужно запускать каждые 15 минут. Это вполне нормальное расписание, меньшие значения могут не поддерживать некоторые серверы.
Наблюдатель (observer): в наблюдателе мы вызываем метод (функцию), которым будет управлять cron.
Пример обсервера:
class Sebweo_Test_Model_Observer { public function cronMethod() { // do something } }
Настройки для cron задаются в админпанели по адресу: Система -> Конфигурация -> Расширенная -> Система -> Cron
Статус всех заданий cron Magento хранит в таблице cron_schedule
базы данных. Эта информация может вам пригодиться при отладке работы cron.
ВНИМАНИЕ: Если какое-либо из заданий cron настроено с ошибкой, все другие задания cron также не будут выполняться, поскольку все они выполняются поочередно.
Теперь давайте заглянем в исходный код Magento и посмотрим, как выполняется cron.
Файлы для рассмотрения:
cron.php
Mage_Cron_Model_Observer
app/code/core/Mage/Cron/etc/config.xml
Начальной точкой является файл cron.php
в корне сайта. Здесь мы видим:
……….. Mage::getConfig()->init()->loadEventObservers('crontab'); Mage::app()->addEventArea('crontab'); Mage::dispatchEvent('always'); Mage::dispatchEvent('default'); ………..
Поэтому Magento загружает сначала все обсерверы из области crontab
, а затем делает диспетчеризацию событий «always
» и «default
».
Оба этих события определены в файле app/code/core/Mage/Cron/etc/config.xml
<crontab> <events> <default> <observers> <cron_observer> <class>cron/observer</class> <method>dispatch</method> </cron_observer> </observers> </default> <always> <observers> <cron_observer> <class>cron/observer</class> <method>dispatchAlways</method> </cron_observer> </observers> </always> </events> </crontab>
Это всего лишь один небольшой пример использования cron. Существует множество возможностей для внесения изменений и улучшений под свои потребности. И вам поможет в этом информация о том, как это работает.
Довольно часто у программистов возникает соблазн написать какую-нибудь обширную функцию, которая должна решать определенную задачу.…
Дискуссии вокруг этой темы вас, вероятно, уже утомили. Но я в данной статье постараюсь показать…
Консоль браузера (также известная как консоль JavaScript или веб-консоль) — это мощный инструмент для разработчиков,…
Никогда не указывайте на ошибки, если не знаете, как их исправить Джордж Бернард Шоу
Когда необходимо сделать выбор, а вы его не делаете, — это тоже выбор Уильям Джеймс…
Когда вы ставите перед собой цели, очень важно быть максимально конкретным. Здесь не поможет простая…