Вступ
Magento були додані CLI команди для роботи із завданнями CRON, починаючи з версії 2.2.0.
- cron:install - генерує та встановлює crontab для поточного користувача та поточного інстансу
- cron:remove - видаляє завдання з crontab
Приклад того, що містить crontab після запуску cron:install:
#~ MAGENTO START c843c167b6a41dfbd235a8330f6fd4b6
* * * * * /bin/php /var/www/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/var/log/magento.cron.log
* * * * * /bin/php /var/www/update/cron.php >> /var/www/var/log/update.cron.log
* * * * * /bin/php /var/www/bin/magento setup:cron:run >> /var/www/var/log/setup.cron.log
#~ MAGENTO END c843c167b6a41dfbd235a8330f6fd4b6
Як додати власні завдання CRON
Більш детальна інформація про ці команди є в документації: Create the Magento crontab
Завдання, які ти бачиш вище, є CRON завданнями для Magento за замовчунням.
Якщо потрібно, ти можеш додати свої CRON завдання до свого модуля.
Це дуже легко зробити. Тобі потрібно додати наступну конфігурацію до файлу di.xml:
<type name="Magento\Framework\Crontab\TasksProviderInterface">
<arguments>
<argument name="tasks" xsi:type="array">
<item name="yourCommand" xsi:type="array">
<item name="command" xsi:type="string">{magentoRoot}bin/magento your:command >> {magentoLog}your.log</item>
</item>
<item name="yourScript" xsi:type="array">
<item name="command" xsi:type="string">{magentoRoot}path/to/your/script.php >> {magentoLog}your.log</item>
</item>
</argument>
</arguments>
</type>
{magentoRoot} та {magentoLog} є шаблонами та будуть замінені шляхами до кореневого каталогу Magento та каталогу з логами Magento.
За такої конфігурації команда cron:install створить crontab із твоїми завданнями, як у наведеному нижче прикладі:
#~ MAGENTO START c843c167b6a41dfbd235a8330f6fd4b6
* * * * * /bin/php /var/www/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/var/log/magento.cron.log
* * * * * /bin/php /var/www/update/cron.php >> /var/www/var/log/update.cron.log
* * * * * /bin/php /var/www/bin/magento setup:cron:run >> /var/www/var/log/setup.cron.log
* * * * * /bin/php /var/www/bin/magento your:command >> /var/www/var/log/your.log
* * * * * /bin/php /var/www/path/to/your/script.php >> /var/www/var/log/your.log
#~ MAGENTO END c843c167b6a41dfbd235a8330f6fd4b6
От і все 😉