Featured image of post Как добавить задачи CRON

Как добавить задачи CRON

Инструкция как добавить CRON задание в модуле

Введение

Cron command list

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

Вот и всё 😉

comments powered by Disqus
Создано при помощи Hugo
Тема Stack, дизайн Jimmy