В сегодняшнем посте мы вкратце рассмотрим работу 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.phpMage_Cron_Model_Observerapp/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. Существует множество возможностей для внесения изменений и улучшений под свои потребности. И вам поможет в этом информация о том, как это работает.
В мире веб-серверов часто говорят о противостоянии Nginx vs Apache. Но что, если бы я…
Когда я начинал свой путь в веб-разработке, вопрос "какой веб-сервер использовать?" практически не стоял. Ответ…
Когда речь заходит о веб-серверах, два имени всегда на слуху: Apache и Nginx. Apache —…
В мире веб-разработки мы постоянно сталкиваемся с проблемой: "А у меня на компьютере все работает!".…
На заре моей карьеры веб-разработчика все было относительно просто: установил локальный сервер (помните Denwer?), положил…
Если вы когда-либо интересовались, как ускорить свой сайт на WordPress, вы, наверное, слышали о "кешировании".…