В сегодняшнем посте мы вкратце рассмотрим работу 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. Существует множество возможностей для внесения изменений и улучшений под свои потребности. И вам поможет в этом информация о том, как это работает.
Содержание статьи Введение: почему цены решают все Что значит сравнение цен с конкурентами 5 причин,…
В последние годы интерес к саунам в Киеве заметно вырос. Это связано не только с…
В современном ритме мегаполиса отдых стал неотъемлемой частью заботы о здоровье и эмоциональном состоянии. Особенно…
В современном мире цифрового маркетинга Facebook (Meta) остается одной из самых мощных платформ для продвижения…
Этот прибор стал незаменимым элементом арсенала представителей множества профессий, но особенно актуален среди военных. Тепловизор…
Постоянный поток новостей, рабочих задач и личных забот часто приводит к тому, что в голове…