Основы работы планировщика задач (cron) в Мадженто

Основы работы планировщика задач (cron) в Мадженто



В сегодняшнем посте мы вкратце рассмотрим работу Cron в Мадженто.

 

Основы

Система Cron в Magento используется для выполнения задач на постоянной основе и по расписанию. Основным файлом для запуска планировщика задач является файл cron.php в корне папки Magento-сайта. Чтобы запустить Cron, вам нужно поставить этот файл в задание планировщика на веб-сервере. И настроить частоту его запуска.

 

Рекомендуется устанавливать cron для Magento, поскольку с его помощью движок решает различные задачи: например, делает очистку логов, рассылает информационные бюллетени, рассылает на почту уведомления о новых заказах и т.п

 

 

Как добавить Cron для пользовательского модуля

Чтобы добавить 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 в деталях

Теперь давайте заглянем в исходный код Magento и посмотрим, как выполняется cron.

 

Файлы для рассмотрения:

  1. cron.php
  2. Mage_Cron_Model_Observer
  3. 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. Существует множество возможностей для внесения изменений и улучшений под свои потребности. И вам поможет в этом информация о том, как это работает.

 



Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *