Основи роботи планувальника завдань (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.
Файли для розгляду:
cron.php
Mage_Cron_Model_Observer
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. Існує безліч можливостей для внесення змін і поліпшень під свої потреби. І вам допоможе в цьому інформація про те, як це працює.
Останні пости
Найкрасивіші та найбільш вражаючі мости з усього світу (ТОП-10)
Міст — це щось більше, ніж просто споруда, яка поєднує два береги. Для того, щоб… Читати далі
Соломон
Життя нас вчить, що свою пару ми пізнаємо, коли розлучаємося, своїх братів ми пізнаємо, коли… Читати далі
Річард Бах
Жодне бажання не дається тобі окремо від сили, що дозволяє його здійснити. Хоча, можливо, для… Читати далі
Стівен Кінг
Життя — це безперервний досвід, і навіть найгірші моменти займають своє місце у пазлі нашого… Читати далі
невідомий автор
Люди, які люблять самотність, дорого заплатили за дружбу з кимось... (невідомий автор) Читати далі