В адмініструванні Magento 2 є багато процесів, які потребують автоматизації та планування. Оновлення курсів валют, надсилання розсилок та сповіщень про продукти обробляються зручною функцією за замовчуванням — Завдання cron у Magento .
Крім того, багато розширень Magento 2 також постачаються з користувацькими завданнями cron для виконання різних завдань у модулі. Тож, якщо вам цікаво, як створити його для свого розширення, ви потрапили в потрібне місце.
Сьогодні ви дізнаєтеся, як крок за кроком створити завдання cron у Magento 2.
Примітка: перед створенням власного завдання cron переконайтеся, що у вас є crons, відкривши crontab як власник файлової системи Magento. Виконайте таку команду:
crontab -l
Результат має бути таким:
#~ MAGENTO START c5f9e5ed71cceaabc4d4fd9b3e827a2b
* * * * * /usr/bin/php /var/www/html/magento2/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/html/magento2/var/log/magento.cron.log
#~ MAGENTO END c5f9e5ed71cceaabc4d4fd9b3e827a2b
1. Створення простого модуля
Першим кроком для створення власного cron-завдання є створення Basic модуль у Magento . Якщо у вас вже є такий, перейдіть до наступного кроку.
2. Створення класу
Перейдіть до кореневого каталогу вашого власного модуля та створіть там cron-каталог.
наприклад, app/code/VendorName/ModuleName/ Cron
Потім створіть файл з назвою Cron/SomeCronModel.php з наступним кодом:
<?php
namespace VendorName\ModuleName\Cron;
class SomeCronModel
{
public function execute()
{
//your cron job code
}
}
Клас, який ви створюєте, запише рядок у таблицю cron_schedule у базі даних, щоб підтвердити успішне виконання завдання cron.
3. Створіть файл crontab.xml
Додайте файл etc/crontab.xml (файл завдання cron, що налаштовується) до каталогу cron за допомогою наступного коду:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
<group id="default">
<job name="vendorname_modulename_cron_somecronmodel" instance="VendorName\ModuleName\Cron\SomeCronModel" method="execute">
<schedule>* * * * *</schedule>
</job>
</group>
</config>
default — ідентифікатор групи, до якої буде включено ваше завдання cron. Ми рекомендуємо додати його до групи за замовчуванням
vendorname_modulename_cron_somecronmodel — назва вашого завдання cron. Він має бути унікальним, тому ми рекомендуємо створити його з назви моделі cron-завдання
VendorName\ModuleName\Cron\SomeCronModel — назва моделі cron-завдання
execute — назва методу, що виконується в моделі cron-завдання
* * * * * — частота виконання cron-завдання.
4. Компіляція коду
Після завершення створення cron-завдання у вашому Magento 2 вам потрібно скомпілювати код. Виконайте таку команду:
bin/magento setup:di:compile
Додатково, очистіть кеш:
bin/magento cache:clean
5. Перевірка Cron-завдання
Щоб переконатися, що ваше власне cron-завдання Magento працює належним чином, перевірте його за допомогою SQL-запиту до таблиці cron_schedule . Запустіть завдання cron вручну , використовуючи таку команду:
bin/magento cron:run
Якщо ви використовуєте , ви також можете виконати свій cron з панелі адміністратора. Просто перейдіть до Система > Cron > Cron Jobs та знайдіть своє власне cron-завдання, зазначене в сітці.
![]()
Поставте галочку та виберіть команду Виконати з масової дії, щоб запустити свій cron.
Після виконання ви можете побачити це в Журналі розкладу разом з усіма іншими cron-завданнями.
![]()
Вітаємо! Тепер ви знаєте, як створювати власні завдання cron у Magento 2. Однак зауважте, що їх створення та керування ними – це дві абсолютно різні речі.
Тому вам потрібно знати, як перевірити стан завдання cron та виконати його вручну, якщо щось піде не так.