Основи роботи планувальника завдань (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. Існує безліч можливостей для внесення змін і поліпшень під свої потреби. І вам допоможе в цьому інформація про те, як це працює.

 

This post was last modified on 06/02/2018 23:15

Останні пости

Конфуцій

Коли вам здасться, що мета недосяжна, не змінюйте ціль — змінюйте свій план дій Конфуцій…

12/05/2024

Чарльз Дарвін

Виживає не найсильніший і не найрозумніший, а той, хто найкраще пристосовується до змін Чарльз Роберт…

11/05/2024

Що таке тег canvas в HTML5 і для чого він потрібен?

Елемент <canvas> з’явився лише в HTML5 і використовується для динамічного малювання графіки на веб-сторінці з…

10/05/2024

Ден Браун

Можливо все, — неможливе просто потребує більше часу Ден Браун  

09/05/2024

Що включає в себе чистка ноутбука?

Ноутбук — це не тільки зручний і функціональний ґаджет, а й доволі делікатний пристрій, що…

08/05/2024

Аль Пачино

Ніколи нічого нікому не пояснюйте. Все одно кожен зрозуміє так, як йому вигідно Аль Пачино…

07/05/2024