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. Une seule tâche cron peut s’exécuter à la fois sur l’instance web pour Adobe Commerce sur les projets d’infrastructure cloud en raison de la nature des environnements en lecture seule. Il est recommandé de ventiler les tâches longues 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. Ne pas exécuter crons
en tant que root
ou en tant qu’utilisateur du serveur web.
Cette configuration diffère des déploiements sur site d’Adobe Commerce, qui comportent plusieurs tâches cron par défaut. Voir Configuration de tâches cron dans le Guide de configuration.
Configuration de tâches cron
La propriété crons
décrit les processus 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 lesquelles 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) La durée maximale pendant laquelle une tâche cron peut s’exécuter avant expiration. La valeur par défaut est de 86 400 secondes (24 heures).
Par défaut, chaque projet cloud Commerce possède la configuration 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 par défaut crons
. Voir Création d’une tâche cron.
crontab
Adobe Commerce a ajouté une option de configuration autocrons uniquement aux projets Pro pour prendre en charge la configuration en libre-service crons
sur les environnements d’évaluation et de production. Si cette option est activée, vous pouvez utiliser crontab
pour passer en revue la configuration cron. not disponible avec les projets de démarrage.
Bien que vous puissiez utiliser crontab
pour passer en revue la configuration des 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 passer en revue la configuration cron sur les environnements Pro :
-
Utilisez SSH pour vous connecter à l’environnement distant.
-
Liste des 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 montre la sortie crontab
pour un environnement qui ne possède que la configuration par défaut crons
:
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 une fois toutes les cinq minutes. Pour les environnements d’évaluation et de production professionnels, l’intervalle minimum est d’une fois par minute. Sur Adobe Commerce sur l’infrastructure 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 crons
(spécification) : * * * * *
- 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 est également le dimanche sur certains systèmes)
Quelques exemples :
00 */3 * * *
s’exécute toutes les trois heures à la première minute (12 h, 3 h, 6 h)20 */8 * * *
s’exécute toutes les 8 heures à la minute 20 (12 h 20, 8 h 20, 16 h 20)00 00 * * *
s’exécute 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 la tâche prend 40 minutes, vous pouvez envisager de modifier le délai planifié.
Commande
cmd
spécifie la commande ou le script personnalisé à exécuter. Le format du script de commande peut être le suivant :
<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 inclut l’ID de projet est /app/abc123edf890/bin/magento
et l’action de script est export:start catalog_category_product
.
Ajout de tâches cron personnalisées à votre projet
Sur la plateforme Adobe Commerce on Cloud Infrastructure, vous pouvez ajouter des personnalisations à la section crons
du fichier .magento.app.yaml
.
integration
, l’intervalle minimum est une fois toutes les cinq minutes. Pour les environnements d’évaluation et de production professionnels, l’intervalle minimum est d’une fois par minute. Vous ne pouvez pas configurer d’intervalles plus fréquents que les minimums par défaut.Sur les projets Adobe Commerce Pro, la fonction auto-crons doit être activée sur votre projet avant de pouvoir 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 auto-crons.
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 Adobe Commerce/app
. -
Dans la section
crons
, ajoutez votre personnalisation en utilisant le 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 modification du code push.
code language-bash git add .magento.app.yaml && git commit -m "cron config updates" && git push origin <branch-name>
Mise à jour des tâches 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 distant integration
avant d’appliquer les modifications aux environnements d’évaluation et de production.
Désactivation des 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, afin d’éviter tout problème de performances. Vous pouvez utiliser la commande ece-tools
CLI cron:disable
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 poste de travail local, modifiez le répertoire de votre 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 effectué les tâches de maintenance requises, veillez à 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 d’infrastructure de cloud d’Adobe Commerce pour optimiser le traitement cron sur la plateforme d’infrastructure de cloud d’Adobe Commerce et pour résoudre les problèmes liés à cron. Si vous rencontrez des problèmes avec le traitement de cron, assurez-vous que votre projet utilise la version la plus récente du package ece-tools
. Voir Mise à jour des outils de CEE.
Vous pouvez consulter les informations de traitement cron dans les fichiers journaux au niveau de l’application pour chaque environnement. Voir Logs de l’application.
Pour obtenir de l’aide sur la résolution des problèmes liés à cron, reportez-vous aux articles suivants du support Adobe Commerce :