Documentation · Dépannage

Erreurs de cron

Ce document couvre les problèmes liés à l'automatisation des importations planifiées, y compris les échecs de WP-Cron, les problèmes de configuration du cron du serveur et les erreurs du worker de file d'attente d'images.

Quand utiliser ce document

Lisez ce document lorsque :

  • Les importations automatiques ne s'exécutent pas selon la planification configurée.
  • L'heure de la dernière exécution de l'importation affichée sur le tableau de bord d'administration n'avance pas.
  • Le journal de l'extension ne montre aucune activité d'importation alors que l'automatisation est activée.
  • L'endpoint REST du cron renvoie des erreurs ou ne déclenche pas les importations.
  • Le worker de file d'attente d'images ne traite pas les images en attente.

Aperçu

L'extension prend en charge deux modes d'automatisation des importations :

  1. Mode WP-Cron (par défaut) : les importations sont déclenchées par le système de pseudo-cron intégré de WordPress (wp-cron.php). WP-Cron s'exécute lorsqu'une page WordPress est chargée ; sur les sites à faible trafic, il peut ne pas se déclencher de manière fiable.
  2. Mode cron du serveur : une véritable tâche cron du système d'exploitation appelle soit wp-cron.php, soit l'endpoint REST dédié de l'extension à un intervalle fixe. C'est plus fiable et recommandé pour les sites en production.

Les deux modes utilisent le même exécuteur d'importation partagé (Scheduler::run_import()). Le résultat est identique quel que soit le déclencheur utilisé.

Options de planification disponibles

Lorsque l'automatisation WP-Cron est activée, les planifications suivantes sont disponibles :

Clé de planificationIntervalle
hourlyToutes les 60 minutes
as24ci_every_6_hoursToutes les 6 heures
twicedailyDeux fois par jour
dailyUne fois par jour
as24ci_customIntervalle personnalisé (minimum 15 minutes, configurable)

Pour les planifications daily et twicedaily, une heure de début (HH:MM, format 24 heures, dans le fuseau horaire du site WordPress) peut être configurée. L'heure de début par défaut est 06:00.

Endpoint REST du cron

L'extension enregistre un endpoint REST qui peut être appelé par un planificateur externe :

GET /wp-json/as24ci/v1/cron-import

Une authentification est requise. La méthode préférée est :

Authorization: Bearer YOUR_TOKEN

Le jeton peut également être transmis en tant que paramètre de requête (?token=YOUR_TOKEN), bien que l'utilisation de l'en-tête soit recommandée pour éviter que le jeton n'apparaisse dans les journaux d'accès du serveur.

Le jeton est généré automatiquement et est visible dans l'onglet des réglages Importations et limites de l'extension. Vous pouvez le régénérer depuis ce même écran.

Worker de file d'attente d'images

Lors des exécutions d'importation par cron et REST, lorsque le mode file d'attente d'images est activé, l'extension place les images de véhicules restantes dans une file d'attente pour un traitement asynchrone. Un hook WP-Cron distinct (as24ci_image_queue_process) exécute le worker de file d'attente d'images. Ce worker traite jusqu'à 30 images par lot et continue jusqu'à ce que la file d'attente soit vide ou que le budget temps soit épuisé. S'il reste des éléments, il se replanifie automatiquement.

Prérequis

  • L'importation automatique est activée dans les réglages de l'extension (onglet Importations et limitesAutomatisation).
  • Au moins un Seller ID est configuré.
  • La connexion API fonctionne. Vérifiez sur la page État du système.
  • Pour le mode cron du serveur : l'environnement d'hébergement prend en charge les tâches planifiées (cron, tâches planifiées ou un service équivalent).

Étapes de diagnostic

Étape 1 : Confirmer que l'automatisation est activée

  1. Allez dans l'onglet Importations et limitesAutomatisation de l'extension.
  2. Confirmez que l'option Activer l'importation automatique est activée.
  3. Confirmez que la planification souhaitée est sélectionnée.
  4. Enregistrez les réglages si des modifications ont été apportées.

Étape 2 : Vérifier l'heure de la dernière exécution

  1. Sur le tableau de bord d'administration de l'extension ou dans l'onglet Système et aide, vérifiez l'horodatage de la Dernière exécution de l'importation.
  2. Si l'horodatage est plus ancien que deux intervalles de planification complets, l'automatisation ne se déclenche probablement pas.

Étape 3 : Vérifier que l'événement WP-Cron est planifié

Pour le mode WP-Cron :

  1. Utilisez une extension WordPress capable de lister les événements planifiés (par exemple, WP Crontrol) ou WP-CLI :
   wp cron event list
  1. Recherchez le hook as24ci_scheduled_import. Confirmez qu'il est présent et que l'heure de sa prochaine exécution est dans le futur.
  2. Si le hook est absent, réenregistrez les réglages d'automatisation dans l'extension pour le replanifier.

Étape 4 : Vérifier que WP-Cron fonctionne sur ce site

WP-Cron peut être désactivé sur certains environnements d'hébergement ou par des extensions de performance :

  1. Vérifiez le fichier wp-config.php pour trouver la ligne :
   define('DISABLE_WP_CRON', true);

Si cette constante est définie sur true, WP-Cron est désactivé. Vous devez utiliser un cron de serveur ou l'endpoint REST à la place.

  1. Confirmez que des requêtes de pages sont régulièrement effectuées sur le site (au moins une fois par intervalle de planification). Sur les sites à faible trafic, WP-Cron peut ne pas se déclencher à l'heure prévue.
  2. Utilisez un service qui ping régulièrement l'URL de votre site pour vous assurer que WP-Cron a des occasions de s'exécuter, ou passez en mode cron du serveur.

Étape 5 : Tester l'endpoint REST du cron

Si vous utilisez ou prévoyez d'utiliser l'endpoint REST :

  1. Récupérez le jeton de cron dans la section Importations et limitesJeton de cron.
  2. Envoyez une requête de test depuis votre serveur :
   curl -H "Authorization: Bearer YOUR_TOKEN" \
        "https://your-site.example.com/wp-json/as24ci/v1/cron-import"
  1. Une réponse réussie renvoie un code HTTP 200 avec "success": true et le décompte des importations.
  2. Une réponse 403 indique un jeton invalide ou manquant. Vérifiez le jeton dans les réglages de l'extension.
  3. Une réponse 429 indique que l'importation est déjà en cours (le verrou est actif). Attendez et réessayez.
  4. Une réponse 500 indique une exception lors de l'exécution de l'importation. Vérifiez le journal de l'extension pour plus de détails.

Si l'API REST n'est pas accessible, confirmez que les permaliens personnalisés sont activés (Réglages → Permaliens → Enregistrer) et que l'API REST de WordPress n'est pas bloquée par une extension de sécurité ou une configuration de serveur.

Étape 6 : Vérifier l'enregistrement du ping du cron externe

Si vous utilisez une tâche cron de serveur qui appelle directement wp-cron.php, vous pouvez ajouter ?as24ci_cron=1 à l'URL pour enregistrer le ping :

https://your-site.example.com/wp-cron.php?doing_wp_cron&as24ci_cron=1

L'extension enregistre l'horodatage de ce ping et l'affiche dans l'onglet Système et aide comme heure de la dernière activité du cron externe.

Étape 7 : Rechercher un verrou d'importation obsolète

Si une exécution d'importation précédente a été interrompue sans libérer son verrou, les exécutions suivantes seront ignorées pendant une durée maximale de 40 minutes. Le journal contiendra :

Import runner (wp-cron): already in progress, skipping.

Si le verrou est réellement obsolète (l'exécution d'origine n'est plus active), attendez que le TTL de 40 minutes expire. Le verrou est automatiquement effacé s'il est plus ancien que 40 minutes lorsque la prochaine exécution tente de démarrer.

Pour effacer le verrou immédiatement :

  • Supprimez l'option transitoire WordPress as24ci_cron_import_running à l'aide d'une extension de gestion des options transitoires ou de WP-CLI :
  wp transient delete as24ci_cron_import_running

Étape 8 : Enquêter sur les échecs du worker de file d'attente d'images

Si les images ne sont pas traitées après l'importation :

  1. Vérifiez le journal de l'extension pour y trouver des entrées contenant Image queue worker.
  2. Confirmez que le hook as24ci_image_queue_process est présent dans la liste des événements WP-Cron.
  3. Si le verrou de la file d'attente d'images (as24ci_image_queue_running) est obsolète, supprimez-le :
   wp transient delete as24ci_image_queue_running

Le verrou de la file d'attente d'images a un TTL de 10 minutes et est également effacé automatiquement lorsqu'il est obsolète.

  1. Vérifiez les statistiques de la Dernière exécution de la file d'attente d'images dans l'onglet Système et aide pour connaître le nombre d'éléments traités, échoués et restants.

Référence de configuration

RéglageEmplacementDescription
Activer l'importation automatiqueImportations et limites → AutomatisationInterrupteur principal pour l'automatisation WP-Cron. Par défaut : désactivé.
PlanificationImportations et limites → AutomatisationFréquence d'importation. Par défaut : toutes les heures.
Heure de débutImportations et limites → AutomatisationPour les planifications quotidiennes / deux fois par jour. Par défaut : 06:00 (fuseau horaire du site).
Intervalle personnalisé (minutes)Importations et limites → AutomatisationPour la planification personnalisée. Minimum : 15 minutes. Par défaut : 30 minutes.
Mode cronImportations et limitesContrôle le type de déclencheur utilisé (wp-cron ou server-cron).
Jeton de cronImportations et limitesJeton secret pour l'endpoint REST. Généré automatiquement. Peut être régénéré.
Max de véhicules par exécutionImportations et limitesLimite le nombre de véhicules traités par exécution automatique. 0 = illimité.
Mode file d'attente d'imagesImportations et limitesPlace les images de véhicules supplémentaires dans une file d'attente pour un traitement en arrière-plan. Par défaut : activé.

Notes opérationnelles

  • Les événements WP-Cron nécessitent du trafic de chargement de page pour se déclencher. Sur les sites de préproduction ou de développement sans visiteurs réguliers, WP-Cron ne s'exécutera pas de manière fiable. Utilisez plutôt l'endpoint REST avec une véritable tâche cron de serveur.
  • L'exécuteur d'importation tente de définir une limite de temps d'exécution PHP de 300 secondes avant de s'exécuter. Sur les hébergements qui restreignent set_time_limit, cela peut échouer. Le journal enregistrera un avertissement si cela se produit. Les catalogues très volumineux peuvent expirer sur des hébergements restrictifs.
  • Le TTL du verrou pour l'importation principale est de 40 minutes (2400 secondes). Le verrou pour le worker de file d'attente d'images est de 10 minutes (600 seconds).
  • Le jeton de cron est stocké en texte brut dans les options de WordPress. Traitez-le comme un secret. Ne le partagez pas sur des forums publics et ne le soumettez pas à un système de contrôle de version.
  • La file d'attente d'images peut contenir jusqu'à 20 000 éléments avant qu'un avertissement ne soit enregistré et qu'une passe de déduplication ne soit exécutée.
  • L'exécution de l'importation via le bouton d'administration Déclencher maintenant utilise le même exécuteur partagé que WP-Cron et l'endpoint REST. Elle est soumise au même verrou et sera bloquée si une importation est déjà en cours.

Dépannage

SymptômeCause probableVérification
Les importations ne s'exécutent pas automatiquementImportation automatique désactivéeActivez l'automatisation dans les réglages d'Importations et limites
as24ci_scheduled_import absent de la liste cronL'événement a été déplanifié après un changement de réglagesRéenregistrez les réglages d'automatisation pour le replanifier
DISABLE_WP_CRON est définiWP-Cron est globalement désactivéUtilisez le cron du serveur ou l'endpoint REST à la place
L'importation se déclenche mais indique "déjà en cours" dans le journalVerrou d'importation obsolèteAttendez 40 minutes ou supprimez l'option transitoire as24ci_cron_import_running
L'endpoint REST renvoie un code HTTP 403Le jeton est incorrect, manquant ou non configuréVérifiez le jeton dans les réglages d'Importations et limites
L'endpoint REST renvoie un code HTTP 429Le verrou d'importation est actifAttendez et réessayez ; si le problème persiste, supprimez l'option transitoire du verrou
L'endpoint REST renvoie un code HTTP 500Exception pendant l'importationVérifiez le journal pour plus de détails
API REST non accessiblePermaliens non configurés, ou API REST bloquéeRégénérez les permaliens ; vérifiez les réglages de l'extension de sécurité
La file d'attente d'images ne traite rienWP-Cron ne peut pas se déclencher ou le verrou de la file d'attente d'images est obsolèteVérifiez WP-Cron ; supprimez l'option transitoire as24ci_image_queue_running si elle est obsolète
L'heure du dernier cron externe ne se met pas à jourLe cron du serveur n'appelle pas l'endpoint ou ?as24ci_cron=1 n'est pas ajoutéVérifiez la commande de la tâche cron et l'URL
L'importation expire sur un grand catalogueTemps d'exécution PHP trop courtUtilisez le cron du serveur ; contactez l'hébergeur pour augmenter le temps d'exécution max de PHP

Documents connexes