У сьогоднішньому пості ми коротко розглянемо роботу 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. Існує безліч можливостей для внесення змін і поліпшень під свої потреби. І вам допоможе в цьому інформація про те, як це працює.
Іспанська мова приваблює мільйони людей своєю мелодійністю, емоційністю та відносною простотою вивчення. Одним із найважливіших…
Коли проєкт залежить від чужих обмежень, зростають ризики простоїв, втрати доступу до даних і складнощів…
У тих, хто планує створення сайту вперше, майже завжди виникає питання: що таке домен і…
Для простого користувача критерієм хорошого Wi-Fi є швидке завантаження сторінок та відсутність буферизації під час…
Коли власник стоматологічної клініки вперше замислюється про автоматизацію, він нерідко іде найпростішим шляхом: гуглить "CRM…
Алоха! Останні кілька років остаточно закріпили тренд на віддалену роботу. Для веб-розробників, DevOps-інженерів та адміністраторів…