Propriété Cron
Adobe Commerce utilise la propriété crons
pour planifier des activités répétitives. Il est idéal pour planifier l’exécution d’une tâche spécifique à certains moments de la journée. En raison de la nature des environnements en lecture seule, une seule tâche cron peut s’exécuter à la fois sur l’instance web pour Adobe Commerce dans les projets d’infrastructure cloud. Il est recommandé de ventiler les tâches de longue durée en tâches plus petites et en file d’attente. Vous pouvez également créer une instance de travail.
Adobe vous recommande d’exécuter crons
en tant que propriétaire du système de fichiers. N’exécutez __ crons
en tant que root
ou utilisateur du serveur web.
Cette configuration est différente des déploiements sur site d’Adobe Commerce, qui comportent plusieurs tâches cron par défaut. Voir Configuration des tâches cron dans le Guide de configuration.
Configurer les tâches cron
La propriété crons
décrit les processus qui sont déclenchés selon un planning. Chaque tâche requiert un nom et les options suivantes :
spec
: expression cron utilisée pour la planification.cmd
: commande à exécuter surstart
etstop
.shutdown_timeout
—(Facultatif) Si une tâche cron est annulée, il s'agit du nombre de secondes après lequel un signal SIGKILL est envoyé pour arrêter la tâche ou le processus. La valeur par défaut est de 10 secondes.timeout
—(Facultatif) Durée maximale pendant laquelle une tâche cron peut s’exécuter avant la temporisation. La valeur par défaut est la valeur maximale autorisée de 86400 secondes (24 heures).
Par défaut, chaque projet cloud Commerce présente la configuration de crons
par défaut suivante dans le fichier .magento.app.yaml
:
crons:
cronrun:
spec: "* * * * *"
cmd: "php bin/magento cron:run"
Si votre projet nécessite des tâches cron personnalisées, vous pouvez les ajouter à la configuration crons
par défaut. Voir Création d’une tâche cron.
crontab
Adobe Commerce a ajouté une option de configuration auto-crons uniquement aux projets Pro pour prendre en charge la configuration de crons
en libre-service dans les environnements d’évaluation et de production. Si cette option est activée, vous pouvez utiliser crontab
pour passer en revue la configuration cron. Cette option n’est pas disponible avec les projets de démarrage.
Bien que vous puissiez utiliser crontab
pour passer en revue la configuration sur les projets Pro, Adobe Commerce n’utilise pas crontab
pour exécuter des tâches cron pour les sites déployés sur l’infrastructure cloud.
Pour vérifier la configuration cron sur les environnements Pro :
-
Utilisez SSH pour vous connecter à l’environnement distant.
-
Répertoriez les processus cron planifiés.
code language-shell crontab -l
note note NOTE Si la commande crontab -l
renvoie une erreurCommand not found
(dans les environnements d’évaluation et de production Pro uniquement), vous devez Envoyer un ticket d’assistance Adobe Commerce pour activer l’option de configuration en libre-service auto-crons sur votre projet.
L’exemple suivant illustre la sortie crontab
pour un environnement qui ne dispose que de la configuration crons
par défaut :
username@hostname:~$ crontab -l
# Crontab is managed by the system, attempts to edit it directly will fail.
SHELL=/etc/platform/6fck2obu3244c/cron-run
MAILTO=""
# m h dom mon dow job_name
* * * * * cronrun
Création d’une tâche cron
Une tâche cron inclut la spécification de planification et de minutage, ainsi que la commande à exécuter à l’heure planifiée. Pour les environnements Starter et Pro integration
, l’intervalle minimum est d’une fois toutes les cinq minutes. Pour les environnements d’évaluation et de production Pro, l’intervalle minimum est d’une fois par minute. Sur Adobe Commerce sur les infrastructures cloud, vous ajoutez des tâches cron personnalisées au fichier .magento.app.yaml
dans la section crons
. Le format général est spec
pour la planification et cmd
pour spécifier la commande ou le script personnalisé à exécuter.
Spécification
Adobe Commerce utilise une expression à cinq valeurs pour une spécification de crons
(spec) : * * * * *
- Minute (0 à 59) Pour tous les environnements Starter et Pro, la fréquence minimale prise en charge pour les tâches cron est de cinq minutes. Vous devrez peut-être configurer les paramètres dans votre administrateur.
- Heure (0 à 23)
- Jour du mois (1 à 31)
- Mois (1 à 12)
- Jour de la semaine (0 à 6) (du dimanche au samedi ; 7 correspond également au dimanche sur certains systèmes)
Voici quelques exemples :
00 */3 * * *
s’exécute toutes les trois heures à la première minute (12 h, 3 h et 6 h)20 */8 * * *
s’exécute toutes les 8 heures à la minute 20 (12 h 20, 8 h 20 et 16 h 20)00 00 * * *
fonctionne une fois par jour à minuit00 * * * 1
fonctionne une fois par semaine le lundi à minuit.
crons
spécifiée dans le fichier .magento.app.yaml
est basée sur le fuseau horaire du serveur et non sur celui spécifié dans les valeurs de configuration du magasin dans la base de données.Lorsque vous déterminez la planification, tenez compte du temps nécessaire pour terminer la tâche. Par exemple, si vous exécutez une tâche toutes les trois heures et que son exécution dure 40 minutes, vous pouvez envisager de modifier la durée planifiée.
Commande
Le cmd
spécifie la commande ou le script personnalisé à exécuter. Le format du script de commande peut inclure les éléments suivants :
<path-to-php-binary> <project-dir>/<script-command>
Par exemple :
crons:
spec: "00 */8 * * *"
cmd: "/usr/bin/php /app/abc123edf890/bin/magento export:start catalog_category_product"
Dans cet exemple, <path-to-php-binary>
est /usr/bin/php
. Le répertoire d’installation, qui comprend l’ID de projet, est /app/abc123edf890/bin/magento
et l’action de script est export:start catalog_category_product
.
Ajouter des tâches cron personnalisées à votre projet
Sur la plateforme d’Adobe Commerce sur l’infrastructure cloud, vous pouvez ajouter des personnalisations à la section crons
du fichier .magento.app.yaml
.
integration
, l’intervalle minimum est d’une fois toutes les cinq minutes. Pour les environnements d’évaluation et de production Pro, l’intervalle minimum est d’une fois par minute. Vous ne pouvez pas configurer d’intervalles plus fréquents que les intervalles minimaux par défaut.Dans les projets Adobe Commerce Pro, la fonction auto-crons doit être activée sur votre projet avant que vous puissiez ajouter des tâches cron personnalisées aux environnements d’évaluation et de production à l’aide du fichier .magento.app.yaml
. Si cette fonctionnalité n’est pas activée, Envoyez un ticket d’assistance Adobe Commerce pour activer les crons automatiques.
Pour ajouter des tâches cron personnalisées :
-
Dans votre environnement de développement local, modifiez le fichier
.magento.app.yaml
dans le répertoire/app
d’Adobe Commerce. -
Dans la section
crons
, ajoutez votre personnalisation à l’aide du format suivant :code language-yaml crons: <cron_name_1>: spec: "<schedule_time>" cmd: "<schedule_command>" <cron_name_2>: spec: "<schedule_time>" cmd: "<schedule_command>"
Dans l’exemple suivant, la tâche
productcatalog
exporte le catalogue de produits toutes les huit heures, 20 minutes après l’heure.code language-yaml crons: magento: spec: '* * * * *' cmd: 'php bin/magento cron:run' productcatalog: spec: '20 */8 * * *' cmd: 'bin/magento export:start catalog_product_category'
-
Ajout, validation et modifications de code push.
code language-bash git add .magento.app.yaml && git commit -m "cron config updates" && git push origin <branch-name>
Mettre à jour les traitements cron
Pour ajouter, supprimer ou mettre à jour une tâche personnalisée, modifiez la configuration dans la section crons
du fichier .magento.app.yaml
. Ensuite, testez les mises à jour dans l’environnement de integration
distant avant d’envoyer les modifications aux environnements d’évaluation et de production.
Désactiver les tâches cron
Vous pouvez désactiver manuellement les tâches cron avant d’effectuer des tâches de maintenance telles que la réindexation ou le nettoyage du cache pour éviter des problèmes de performances. Vous pouvez utiliser la cron:disable
de commande de l’interface de ligne de commande ece-tools
pour désactiver toutes les tâches cron et arrêter tous les processus cron actifs.
Pour désactiver les tâches cron :
-
Sur votre station de travail locale, accédez au répertoire du projet.
-
Utilisez SSH pour vous connecter à l’environnement distant.
code language-bash magento-cloud ssh
-
Désactivez les tâches cron et arrêtez les processus cron actifs.
code language-shell ./vendor/bin/ece-tools cron:disable
-
Une fois que vous avez terminé les tâches de maintenance requises, assurez-vous de réactiver les tâches cron.
code language-shell ./vendor/bin/ece-tools cron:enable
Résolution des problèmes liés aux tâches cron
Adobe a mis à jour le package Adobe Commerce sur l’infrastructure cloud pour optimiser le traitement cron sur la plateforme Adobe Commerce sur l’infrastructure cloud et résoudre les problèmes liés à cron. Si vous rencontrez des problèmes lors du traitement de cron, assurez-vous que votre projet utilise la version la plus récente du package ece-tools
. Voir Mise à jour des outils CEE.
Vous pouvez consulter les informations de traitement cron dans les fichiers journaux au niveau de l’application pour chaque environnement. Voir Journaux d’application.
Consultez les articles d’assistance Adobe Commerce suivants pour obtenir de l’aide sur la résolution des problèmes liés à cron :