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

 

Recent Posts

Интернет-магазин без лишнего функционала: как не переплатить за разработку на старте

Многие предприниматели сталкиваются с одной и той же проблемой. После утверждения бюджета разработка затягивается, появляются…

16 часов ago

Как выбрать детские бутсы для футбольной секции и не ошибиться с типом подошвы

Футбольная секция быстро показывает, насколько обувь подходит ребенку. Если пара скользит, давит или плохо цепляется…

2 дня ago

Флагманский смартфон: почему стоит купить Samsung Galaxy S26 Ultra

Компания Samsung — один из лидеров на рынке электроники. Ее смартфоны выделяются надежностью, качественными дисплеями,…

2 дня ago

Идеальное рабочее место: собираем надежный сетап для стабильной работы и гейминга

Рабочее пространство давно перестало быть просто столом с ноутбуком. Сегодня это полноценная экосистема, где каждая…

1 неделя ago

Серверы VPS для построения независимых онлайн-систем

Когда проект зависит от чужих ограничений, возрастают риски простоев, потери доступа к данным и сложности…

2 недели ago

Домен и хостинг: в чем разница и почему они работают только вместе

У тех, кто планирует создание сайта впервые, почти всегда возникает вопрос: что такое домен и…

2 недели ago