Personalización de la referencia de crons
Este tema le ayuda a configurar crontabs y, opcionalmente, grupos cron para módulos personalizados. Si el módulo personalizado necesita programar tareas periódicamente, debe configurar un crontab para ese módulo. Un crontab es una configuración de trabajo cron.
Opcionalmente, puede configurar un grupo personalizado, que entre otras cosas le permite ejecutar trabajos cron definidos en ese grupo independientemente de otros trabajos cron.
Para ver un tutorial paso a paso, consulte Configurar trabajos cron personalizados y grupos cron (tutorial).
Para obtener información general sobre los trabajos cron, consulte Configurar trabajos cron.
Configuración de grupos cron
En esta sección se explica cómo crear opcionalmente un grupo cron para un módulo personalizado. Si no necesita hacerlo, continúe con la siguiente sección.
Un grupo cron es un grupo lógico que le permite ejecutar cron fácilmente para más de un proceso a la vez. La mayoría de los módulos de Commerce utilizan el grupo cron default; algunos módulos utilizan el grupo index.
Si va a implementar cron para un módulo personalizado, puede elegir usar el grupo default o un grupo diferente.
Para configurar un grupo cron para su módulo:
Cree un archivo crontab.xml en el directorio de módulos:
<your component base dir>/<vendorname>/module-<name>/etc/crontab.xml
Para un grupo, el archivo debe tener el siguiente contenido:
<?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>
Donde:
group_namejob_nameclasspathmethodclasspath al que llamar.timeEl(la) crontab.xml resultante con dos grupos puede tener este aspecto:
<?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>
Por ejemplo, consulte Magento_Customer crontab.xml.
Especificar las opciones del grupo Cron
Puede declarar un nuevo grupo y especificar sus opciones de configuración (que se ejecutan en el ámbito de la vista de almacén) mediante el archivo cron_groups.xml, ubicado en:
<your component base dir>/<vendorname>/module-<name>/etc/cron_groups.xml
A continuación se muestra un ejemplo del archivo 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>
Donde:
schedule_generate_everycron_schedule.schedule_ahead_forcron_schedule.schedule_lifetimehistory_cleanup_everyhistory_success_lifetimehistory_failure_lifetimeuse_separate_processDeshabilitar un trabajo cron
Los trabajos de Cron no tienen una característica disable como la que tenemos para observadores. Sin embargo, un trabajo cron se puede deshabilitar utilizando la siguiente técnica: schedule una hora que contenga una fecha que nunca ocurrirá.
Por ejemplo, deshabilite el trabajo cron visitor_clean que se definió en el 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 deshabilitar el trabajo cron de visitor_clean, cree un módulo personalizado y vuelva a escribir el trabajo cron de visitor_clean schedule:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 30 2 *</schedule>
</job>
</group>
...
Ahora, el trabajo cron de visitor_clean se ha configurado para ejecutarse a las 00:00 del 30 de febrero, en una fecha que nunca ocurrirá.