В сегодняшнем посте мы вкратце рассмотрим работу 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. Существует множество возможностей для внесения изменений и улучшений под свои потребности. И вам поможет в этом информация о том, как это работает.
Представьте, что ваш основной сайт – это большой дом, стоящий на вашем земельном участке (example.com).…
Есть два способа командовать женщиной, но никто их не знает Френк МакКинни Кин Хаббард
Самое обидное, что в информационной войне всегда проигрывает тот, кто говорит правду, ведь он ограничен…
Если тебе когда-нибудь захочется найти такого человека, который сможет одолеть любую, даже самую тяжелую беду…
Представьте себе, что вы открыли пиццерию в Киеве. Ваша пицца настолько вкусна, что ее хотят…
Представьте, что ваш сайт – это большая библиотека, а ваш сервер – это главный библиотекарь.…