Como criar uma tarefa agendada (cronj) no Magento em 2 passos
Desenvolvimento, Magento 2
Atualizado em 16 de setembro de 2024
Neste artigo veremos como criar uma tarefa para ser executada pelo cron do Magento. Ou seja, durante o desenvolvimento de módulos para Magento, podemos definir um método para ser executado em determinado horário, ou de forma recorrente.
Isto é útil especialmente nos casos de integração de estoque ou outras integrações que você precise fazer em sua loja.
Primeiro Passo: Criar o crontab.xml
Crie um arquivo chamado crontab.xml na pasta <seu_modulo>/etc/crontab.xml. Caso não tenha um módulo criado ou não saiba como criar um, veja como criar um módulo básico para Magento 2.
<?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="<nome do grupo>">
<job name="<nome da tafera>" instance="<classe>" method="<método>">
<schedule><expressão do cron></schedule>
</job>
</group>
</config>
Substitua os parâmetros conforme explicado abaixo:
- <nome do grupo> – nome do grupo do cronjob. Não precisa ser único, mas você só pode executar um grupo por vez. Se não for criar um grupo seu, coloque
default. - <nome da tarefa> – identificador único desta tarefa. Não deve ter nenhuma outra com mesmo nome. Ex:
mymodule_send_inventory - <classe> – nome completo da classe onde está o método que deseja executar. Ex:
RicardoMartins\PagSeguro\Cron\UpdatePendingOrderStatus. Tipicamente classes de cron são colocadas na pastaCron - <método> – nome do método que deseja executar. Ex:
sendToErp - <expressão do cron> – composto por uma string com 5 parâmetros. Falaremos mais sobre ela abaixo. Ex:
* * * * *para executar este método a cada minuto.
Exemplo Crontab Magento
Veja um exemplo final do módulo PagSeguro para Magento 2.
<?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 instance="RicardoMartins\PagSeguro\Cron\UpdateProductInstallmentValues" method="execute" name="rm_pagseguro_updateinstallments">
<schedule>*/5 * * * *</schedule>
</job>
<job instance="RicardoMartins\PagSeguro\Cron\UpdatePendingOrderStatus" method="execute" name="rm_pagseguro_updatependingorderstatus">
<schedule>*/5 * * * *</schedule>
</job>
</group>
</config>
No exemplo temos 2 métodos, de duas classes diferentes, executados a cada 5 minutos. Eles são responsáveis por atualizar informações de parcelamento e de pedidos pendentes, porém outras condições mais avançadas para determinar sua execução é realizada dentro dos próprios métodos.
Expressão do Cron – Como funciona
A expressão cron do Magento segue o padrão universal, ou seja, o mesmo usado no comando crontab -e do linux/mac.
Ele é composto de 5 valores, da seguinte forma:

Veja alguns exemplos de expressões cron que facilitarão o entendimento:
- * * * * * é executado a cada minuto
- */5 * * * * é executado a cada 5 minutos
- 0 * * * * é executado aos 0 minutos de cada hora, ou seja, de hora em hora
- 0,30 * * * * é executado aos 0 e aos 30 minutos de cada hora
- 0 3 20 12 * é executado às 3 da manhã do dia 20 de Dezembro de todos os anos
Para explorar outras opções, use o site crontab generator e digite ls no campo de comando, apenas para gerar alguma coisa.
Segundo passo: Criar sua classe e método
A parte mais complexa – se é que existe uma neste caso – está no XML do passo 1.
Contanto que sua classe seja criada no lugar que você definiu lá, e exista o método público que mencionou, tudo funcionará bem.
A classe e método a ser executado não precisam estender nenhuma outra classe, e podem utilizar injeção de dependência livremente.
E como falado anteriormente, por convenção, a classe deve ser colocada dentro da pasta Cron do módulo que a define.
Como testar meu cron no Magento?
Para ver se o cron está configurado e sendo executado, verifique o arquivo cron.log localizado na pasta var/log de sua loja.
Para testar se um comando que acabou de criar está de fato funcionando, costumo usar o n98-magerun2. Ele é uma das 10+ ferramentas que demonstro no curso de criação de módulos para Magento 2.
Trata-se de um executável php (.phar) que você executa sempre à partir da pasta de sua instalação Magento.
Basta digitar ./n98-magerun.phar cron:run <id_do_cron>, onde o id do cron deve ser substituído pelo nome da tarefa que você definiu no crontab.xml.
Gostou deste artigo?
Te convido a fazer parte do Clube Magenteiro. Ao fazer parte deste grupo exclusivo, você ganha acesso à todos os cursos e conteúdo publicados no Magenteiro.
Além disso, ainda poderá fazer parte de grupos exclusivos de alunos onde trocamos experiências, dicas, oportunidades de trabalho, e muito mais.
Te espero lá.
- Guest checkout bloqueado na API REST do Magento 2? Confira isso. - 7 de julho de 2026
- Você precisa testar esta plataforma de e-commerce - 9 de fevereiro de 2026
- A hora de montar o seu OnlyFans chegou! Veja 8 ideias pra começar o seu. - 4 de dezembro de 2024
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-2/criar-tarefa-agendada-cronjob/"]