В сегодняшнем посте мы вкратце рассмотрим работу 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. Существует множество возможностей для внесения изменений и улучшений под свои потребности. И вам поможет в этом информация о том, как это работает.
Грехи других судить вы так усердно рветесь, начните со своих и до чужих не доберетесь… Read More
Люди, между которыми есть любовь и взаимопонимание, скрепляют отношения и зарождают новый союз, а дату… Read More
Для качественного SEO (поисковой оптимизации, раскрутки сайта) одним из важных показателей является Авторитет домена (Domain… Read More
Выяснение того, как вывести свои деньги с PayPal, является одним из первых вопросов, которыми озадачивается… Read More
Юбка – мощный элемент женского гардероба, благодаря которому любой наряд будет выглядеть потрясающе стильно и… Read More
Поисковые системы (например, Google) проверяют технические характеристики вашего сайта, такие как скорость загрузки, удобство навигации,… Read More