Коварная война россии против Украины. Ориентировочные потери врага
(по состоянию на 15.08.2022)
43750
солдат
233
самолетов
195
вертолетов
1876
танков
4141
ББМ
985
артиллерия
136
ПВО
261
РСЗО
3044
машин
15
корабли и катера
Основы работы планировщика задач (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. Существует множество возможностей для внесения изменений и улучшений под свои потребности. И вам поможет в этом информация о том, как это работает.

 

 

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

Ваш адрес email не будет опубликован.