Підступна війна росії проти України. Орієнтовні втрати ворога
(станом на 28.04.2024)
466150
осіб
348
літаків
325
гелікоптерів
7279
танків
13991
ББМ
11948
артилерія
776
ППО
1050
РСЗВ
16065
машин
26
кораблі і катери
Основи роботи планувальника завдань (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. Існує безліч можливостей для внесення змін і поліпшень під свої потреби. І вам допоможе в цьому інформація про те, як це працює.

 

 

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

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