Personalizar referência de crons
Este tópico ajuda a configurar crontabs e, opcionalmente, grupos de cron para módulos personalizados. Se seu módulo personalizado precisa agendar tarefas periodicamente, você deve configurar um crontab para esse módulo. Um crontab é uma configuração de trabalho cron.
Como opção, você pode configurar um grupo personalizado, que, entre outras coisas, permite executar trabalhos cron definidos nesse grupo independentemente de outros trabalhos cron.
Para um tutorial passo a passo, consulte Configurar trabalhos cron personalizados e grupos cron (tutorial).
Para obter uma visão geral sobre os trabalhos cron, consulte Configurar trabalhos cron.
Configurar grupos cron
Esta seção discute como criar opcionalmente um grupo cron para um módulo personalizado. Se não precisar fazer isso, continue com a próxima seção.
Um grupo cron é um grupo lógico que permite executar facilmente o cron para mais de um processo por vez. A maioria dos módulos do Commerce usa o grupo cron default
; alguns módulos usam o grupo index
.
Se você estiver implementando o cron para um módulo personalizado, poderá optar por usar o grupo default
ou um grupo diferente.
Para configurar um grupo cron para seu módulo:
Crie um arquivo crontab.xml
no diretório do módulo:
<your component base dir>/<vendorname>/module-<name>/etc/crontab.xml
Para um grupo, o arquivo deve ter o seguinte conteúdo:
<?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="<group_name>">
<job name="<job_name>" instance="<classpath>" method="<method>">
<schedule><time></schedule>
</job>
</group>
</config>
Onde:
group_name
job_name
classpath
method
classpath
para chamar.time
O crontab.xml
resultante com dois grupos pode ter esta aparência:
<?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="<job_1_name>" instance="<classpath>" method="<method_name>">
<schedule>* * * * *</schedule>
</job>
<job name="<job_2_name>" instance="<classpath>" method="<method_name>">
<schedule>* * * * *</schedule>
</job>
</group>
<group id="index">
<job name="<job_3_name>" instance="<classpath>" method="<method_name>">
<schedule>* * * * *</schedule>
</job>
<job name="<job_4_name>" instance="<classpath>" method="<method_name>">
<schedule>* * * * *</schedule>
</job>
</group>
</config>
Como exemplo, consulte Magento_Customer crontab.xml.
Especificação das opções do grupo Cron
Você pode declarar um novo grupo e especificar suas opções de configuração (todas executadas no escopo de exibição de repositório) por meio do arquivo cron_groups.xml
, localizado em:
<your component base dir>/<vendorname>/module-<name>/etc/cron_groups.xml
Veja abaixo um exemplo do arquivo cron_groups.xml
:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/cron_groups.xsd">
<group id="<group_name>">
<schedule_generate_every>1</schedule_generate_every>
<schedule_ahead_for>4</schedule_ahead_for>
<schedule_lifetime>2</schedule_lifetime>
<history_cleanup_every>10</history_cleanup_every>
<history_success_lifetime>60</history_success_lifetime>
<history_failure_lifetime>600</history_failure_lifetime>
<use_separate_process>1</use_separate_process>
</group>
</config>
Onde:
schedule_generate_every
cron_schedule
.schedule_ahead_for
cron_schedule
.schedule_lifetime
history_cleanup_every
history_success_lifetime
history_failure_lifetime
use_separate_process
Desabilitar um trabalho cron
Os trabalhos do Cron não têm um recurso disable
como temos para observadores. No entanto, um trabalho cron pode ser desabilitado usando a seguinte técnica: schedule
um horário que contém uma data que nunca ocorrerá.
Por exemplo, desabilite o trabalho cron visitor_clean
que foi definido no módulo Magento_Customer
:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 * * *</schedule>
</job>
</group>
...
Para desabilitar o trabalho do cron visitor_clean
, crie um módulo personalizado e substitua o trabalho do cron schedule
de visitor_clean
:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 30 2 *</schedule>
</job>
</group>
...
Agora, o trabalho do cron visitor_clean
foi definido para ser executado às 00:00 do dia 30 de fevereiro, na data que nunca ocorrerá.