Personnalisation de la référence des crons
Cette rubrique vous aide à configurer des onglets et éventuellement des groupes cron pour les modules personnalisés. Si votre module personnalisé doit planifier des tâches périodiquement, vous devez configurer un crontab pour ce module. Un crontab est une configuration de tâche cron.
Vous pouvez éventuellement configurer un groupe personnalisé qui vous permet, entre autres, d’exécuter des tâches cron définies dans ce groupe indépendamment des autres tâches cron.
Pour consulter un tutoriel détaillé, reportez-vous à la section Configuration de tâches cron personnalisées et de groupes cron (tutoriel).
Pour obtenir un aperçu des tâches cron, voir Configuration des tâches cron.
Configuration des groupes cron
Cette section explique comment créer éventuellement un groupe cron pour un module personnalisé. Si vous n’avez pas besoin de le faire, passez à la section suivante.
Un groupe cron est un groupe logique qui vous permet d’exécuter facilement cron pour plusieurs processus à la fois. La plupart des modules Commerce utilisent le groupe cron default
; certains modules utilisent le groupe index
.
Si vous implémentez cron pour un module personnalisé, vous pouvez choisir d’utiliser le groupe default
ou un autre groupe.
Pour configurer un groupe cron pour votre module :
Créez un fichier crontab.xml
dans votre répertoire de module :
<your component base dir>/<vendorname>/module-<name>/etc/crontab.xml
Pour un groupe, le fichier doit contenir les contenus suivants :
<?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>
Où :
group_name
job_name
classpath
method
classpath
à appeler.time
Le résultat crontab.xml
avec deux groupes peut ressembler à ceci :
<?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>
Pour consulter un exemple, reportez-vous à la section Magento_Customer crontab.xml.
Spécification des options de groupe Cron
Vous pouvez déclarer un nouveau groupe et spécifier ses options de configuration (qui s’exécutent toutes dans la portée de vue du magasin) via le fichier cron_groups.xml
, situé dans :
<your component base dir>/<vendorname>/module-<name>/etc/cron_groups.xml
Voici un exemple du fichier 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>
Où :
schedule_generate_every
cron_schedule
.schedule_ahead_for
cron_schedule
.schedule_lifetime
history_cleanup_every
history_success_lifetime
history_failure_lifetime
use_separate_process
Désactivation d’une tâche cron
Les tâches Cron n’ont pas de fonction disable
comme celle que nous avons pour observateurs. Cependant, une tâche cron peut être désactivée en utilisant la technique suivante : schedule
une fois qui contient une date qui ne se produira jamais.
Par exemple, désactivez la tâche visitor_clean
cron définie dans le module Magento_Customer
:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 * * *</schedule>
</job>
</group>
...
Pour désactiver la tâche visitor_clean
cron, créez un module personnalisé et réécrivez la tâche visitor_clean
cron schedule
:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 30 2 *</schedule>
</job>
</group>
...
Désormais, la tâche cron visitor_clean
a été définie pour s’exécuter à 00:00 le 30 février, à la date qui ne se produira jamais.