Підступна війна росії проти України. Орієнтовні втрати ворога
(станом на 16.07.2024)
561400
осіб
361
літаків
326
гелікоптерів
8227
танків
15862
ББМ
15368
артилерія
892
ППО
1119
РСЗВ
20680
машин
28
кораблі і катери
Основи роботи планувальника завдань (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. Існує безліч можливостей для внесення змін і поліпшень під свої потреби. І вам допоможе в цьому інформація про те, як це працює.

 

 

Напишіть тут свою думку/питання

Ваша пошта не публікуватиметься. Обов’язкові поля позначені *