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