Magento 2 — це сукупність функцій, які допомагають вам створити успішний магазин, яким легко керувати. У адмін панелі Magento 2 виконується багато процесів, які потребують автоматизації та планування. І саме тут стає в нагоді крон задача. Тому...

Давайте з’ясуємо, що це, навіщо це потрібно і як створити власну крон задачі у Magento 2.

Що таке крон задача в Magento?

Крон задача в Magento — одна з найважливіших функцій Magento 2. Вона допомагає налаштувати команди або скрипт, які систематично запускаються та виконують завдання, для яких ви їх створите.

За допомогою крон задачі вам не потрібно вручну робити reindex , генерувати Google sitemap, надсилати електронні листи Magento, оновлювати курси валют тощо. Крон задача робить все за вас автоматично, в певну дату та час, якщо ви налаштуєте її правильно.

Навіщо використовувати крон задачу у Magento 2?

Як вже зазначалось раніше, крон задача спрощує вам керування Magento 2, виконуючи певні завдання за розкладом. З крон задачею вам не потрібно робити багато монотонної роботи вручну або затримуватися допізна, чекаючи найзручнішого часу для виконання якогось завдання. Крон задача зробить все за вас.

Найпоширеніші завдання якими займається крон задача:

  • Переіндексація
  • Розсилка новин /усіх електронних листів Magento
  • Створення файлів Google Sitemap
  • Оновлення курсів валют
  • Надсилання сповіщень користувачам
  • Оновлення catalog price rules

Однак це далеко не все. Багато розширень Magento 2 використовують крон задачі для регулярного оновлення даних. І наші розширень Magento 2 не є винятком. Наприклад:

1. У Magento 2 Dynamic Category, що дозволяє створювати автоматичні категорії, є 2 крон задачі:

  • Перша оновлює динамічні атрибути продукту
  • Друга застосовує правила динамічної категорії

2. У розширенні Magento 2 WebP Images крон задача запускає та конвертує зображення в сучасний формат WebP.

3. У розширенні Magento 2 Mautic Integration крон задача асинхронно запускає запити API до Mautic.

Примітка: перед створенням власної крон задачі, переконайтесь. що у вас є крони, відкривши 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

Виконайте наступні кроки щоб створити крон задачу в Magento 2:

1. Створіть мінімальний модуль.

2. Додайте до нього Cron/SomeCronModel.php - модель крон задачі:

<?php

namespace VendorName\ModuleName\Cron;

class SomeCronModel
{
public function execute()
{
//ваш код крон задачі
}
}

3. Додайте до нього etc/crontab.xml - конфігураційний файл крон задачі:

<?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 - ідентифікатор групи, до якої входитиме ваша крон задача. Радимо додавати її до default групи;
vendorname_modulename_cron_somecronmodel - назва вашої крон задачі. Повинна бути унікальною, формуйте її з назви моделі крон задачі ;
VendorName\ModuleName\Cron\SomeCronModel - назва моделі крон задачі;
execute - назва методу у моделі крон задачі, який виконуватиметься;
* * * * * - частота виконання задачі. Більше про цей формат дізнайтесь на Вікіпедії.

Також відвідайте офісійну документацію, для отримання детальнішої інформації про крон задачі та крон групи у Magento 2.