Personnalisation de la référence crons
Cette rubrique vous aide à configurer des onglets cron et éventuellement des groupes cron pour les modules personnalisés. Si votre module personnalisé doit planifier des tâches de manière périodique, vous devez configurer un crontab pour ce module. Un crontab est une configuration de tâche cron.
Vous pouvez éventuellement configurer un groupe personnalisé, ce qui vous permet, entre autres, d’exécuter les tâches cron définies dans ce groupe indépendamment des autres tâches cron.
Pour un tutoriel détaillé, consultez Configuration de tâches et de groupes cron personnalisés (tutoriel).
Pour obtenir une présentation des tâches cron, voir Configuration des tâches cron.
Configuration des groupes cron
Cette section explique comment créer de manière facultative 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 modules :
<your component base dir>/<vendorname>/module-<name>/etc/crontab.xml
Pour un groupe, le fichier doit avoir le contenu suivant :
<?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
deux groupes peuvent 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>
Par exemple, consultez Magento_Customer crontab.xml.
Définition des options du 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 d’affichage 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 fonctionnalité disable
comme nous en avons pour les observateurs. Cependant, une tâche cron peut être désactivée en utilisant la technique suivante : schedule
une heure qui contient une date qui ne se produira jamais.
Par exemple, désactivez la tâche cron visitor_clean
définie dans Magento_Customer
module :
...
<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 cron visitor_clean
, créez un module personnalisé et réécrivez les visitor_clean
de la tâche cron schedule
:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 30 2 *</schedule>
</job>
</group>
...
Maintenant, la tâche cron visitor_clean
a été définie pour s’exécuter à 00:00 le 30 février, à une date qui ne se produira jamais.