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

Tags: Magento

Recent Posts

Як вивчити німецьку мову легко і весело? З допомогою Beste Freunde!

Німецька часто вважається складною мовою. Так, німецька лексика має «важкий» характер. Так, є дійсно дуже… Read More

27/09/2020

Опалення і гаряча вода коли треба, а не коли включать

Тепло в домі і гаряча вода в будь-який час для багатьох мешканців багатоквартирних та приватних… Read More

19/09/2020

Інструкція по завантаженню відео з сервісу TikTok (безкоштовно та без watermark)

Якщо ви ще не чули про TikTok, тоді рекомендуємо вам спочатку ознайомитися з цим коротким… Read More

17/09/2020

Що є в бюджетному ноутбуці – на які характеристики розраховувати?

Пройшли ті часи, коли пристойний ноутбук коштував від 1000 доларів. Сьогодні можна купити досить непоганий… Read More

16/09/2020

Що краще: цифрове телебачення Т2 чи інтернет-телебачення

Сучасне життя неможливо уявити без телебачення. Воно дозволяє дізнаватися про події в Україні та світі,… Read More

02/09/2020

Гіпоалергенна подушка. Чому вона важлива?

Зараз знайдеться мало людей, в яких немає алергії на продукти або пилок рослин. Вважається, що… Read More

28/08/2020