Введение
Magento были добавлены CLI команды для работы с задачами CRON, начиная с версии 2.2.0.
- cron:install - генерирует и устанавливает crontab для текущего пользователя и текущего инстанса
- cron:remove - удаляет задачи из crontab
Пример того, что содержит crontab после запуска cron:install:
1
2
3
4
5
|
#~ 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:
1
2
3
4
5
6
7
8
9
10
11
12
|
<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 с твоими задачами, как в следующем примере:
1
2
3
4
5
6
7
|
#~ 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
|
Вот и всё 😉