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. A 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 tarefas cron personalizadas e grupos cron (tutorial).
Para obter uma visão geral sobre tarefas do 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.
A 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 default
grupo cron; alguns módulos usam o index
grupo.
Se estiver implementando o cron para um módulo personalizado, você pode optar por usar o default
grupo ou um grupo diferente.
Para configurar um grupo cron para seu módulo:
Criar um crontab.xml
arquivo 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 resultado crontab.xml
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 são executadas no escopo de exibição de loja) por meio do cron_groups.xml
localizado em:
<your component base dir>/<vendorname>/module-<name>/etc/cron_groups.xml
Veja abaixo um exemplo da cron_groups.xml
arquivo:
<?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
tabela.schedule_ahead_for
cron_schedule
tabela.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 disable
como temos para observadores. No entanto, um trabalho cron pode ser desativado usando a seguinte técnica: schedule
um horário que contém uma data que nunca acontecerá.
Por exemplo, desative a variável visitor_clean
trabalho cron definido em Magento_Customer
módulo:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 * * *</schedule>
</job>
</group>
...
Para desativar o visitor_clean
cron, crie um módulo personalizado e reescreva o visitor_clean
trabalho cron schedule
:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 30 2 *</schedule>
</job>
</group>
...
Agora, a variável visitor_clean
a tarefa do cron foi definida para ser executada às 00:00 do dia 30 de fevereiro, na data que nunca ocorrerá.