У сьогоднішньому пості ми коротко розглянемо роботу Cron в Мадженто.
Система Cron в Magento використовується для виконання завдань на постійній основі і за розкладом. Основним файлом для запуску планувальника завдань є файл cron.php в кореневій папці Magento-сайту. Щоб запустити Cron, вам потрібно поставити цей файл в завдання планувальника на веб-сервері. І налаштувати частоту його запуску.
Рекомендується встановлювати cron для Magento, оскільки з його допомогою двигун вирішує різні завдання: наприклад, робить очистку логів, розсилає інформаційні бюлетені, розсилає на пошту повідомлення про нові замовлення і т.п.
Щоб додати 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.
Файли для розгляду:
cron.phpMage_Cron_Model_Observerapp/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. Існує безліч можливостей для внесення змін і поліпшень під свої потреби. І вам допоможе в цьому інформація про те, як це працює.
WordPress роками був неперевершеним "монолітом": він відповідав і за зручну адмін-панель, і за збереження даних,…
У світі веб-серверів часто говорять про протистояння Nginx vs Apache. Але що, якби я сказав…
Коли я починав свій шлях у веб-розробці, питання "який веб-сервер використовувати?" практично не стояло. Відповідь…
Коли мова заходить про веб-сервери, два імені завжди на слуху: Apache та Nginx. Apache —…
У світі веб-розробки ми постійно стикаємося з проблемою: "А в мене на комп'ютері все працює!".…
На зорі моєї кар'єри веб-розробника все було відносно просто: встановив локальний сервер (пам'ятаєте Denwer?), поклав…