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_namejob_nameclasspathmethodclasspath para chamar.timeO 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_everycron_schedule.schedule_ahead_forcron_schedule.schedule_lifetimehistory_cleanup_everyhistory_success_lifetimehistory_failure_lifetimeuse_separate_processDesabilitar 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 visitor_clean de schedule:
...
<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á.