Magento – Magento2: run cron job every minute

cronmagento2

System cron starts Magento 2 cron every minute:

$ crontab -l
*/1 * * * * /usr/bin/php /home/user/prj/mage2/bin/magento cron:run >> /home/user/prj/mage2/var/log/cron.log

I see new line Ran jobs by schedule. is added every minute into the log.

This is my settings for my task:

<?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="my_own" instance="\Vendor\Module\Cron\Task" method="execute">
            <schedule>...</schedule>
        </job>
    </group>
</config>

These settings run my job every 15 minutes in fact (my own message is added every 15 minutes into the log):

<schedule>* * * * *</schedule>
<schedule>*/1 * * * *</schedule>

This is my log:

...
Ran jobs by schedule.
Ran jobs by schedule.
Ran jobs by schedule.
My own job is started.
Ran jobs by schedule.
...

These are Magento 2 cron settings:
Magento 2 Cron settings

How can I set <schedule> to run my task every 1 minute?

Best Answer

There are 2 groups in Magento 2 cron: index & default. Tasks/jobs are placed into index group will start every 1 minute (by default setup):

<group id="index">
    <job name="..." instance="..." method="...">
        <schedule>* * * * *</schedule>
    </job>
</group>

Tasks/jobs are placed into default group will start every 15 minutes (by default setup):

<group id="default">
    <job name="..." instance="..." method="...">
        <schedule>* * * * *</schedule>
    </job>
</group>
Related Topic