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 :
- 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. - 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 planification | Intervalle |
|---|---|
hourly | Toutes les 60 minutes |
as24ci_every_6_hours | Toutes les 6 heures |
twicedaily | Deux fois par jour |
daily | Une fois par jour |
as24ci_custom | Intervalle 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 limites → Automatisation).
- 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
- Allez dans l'onglet Importations et limites → Automatisation de l'extension.
- Confirmez que l'option Activer l'importation automatique est activée.
- Confirmez que la planification souhaitée est sélectionnée.
- Enregistrez les réglages si des modifications ont été apportées.
Étape 2 : Vérifier l'heure de la dernière exécution
- 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.
- 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 :
- Utilisez une extension WordPress capable de lister les événements planifiés (par exemple, WP Crontrol) ou WP-CLI :
wp cron event list
- 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. - 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 :
- Vérifiez le fichier
wp-config.phppour 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.
- 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.
- 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 :
- Récupérez le jeton de cron dans la section Importations et limites → Jeton de cron.
- 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"
- Une réponse réussie renvoie un code HTTP 200 avec
"success": trueet le décompte des importations. - Une réponse 403 indique un jeton invalide ou manquant. Vérifiez le jeton dans les réglages de l'extension.
- Une réponse 429 indique que l'importation est déjà en cours (le verrou est actif). Attendez et réessayez.
- 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 :
- Vérifiez le journal de l'extension pour y trouver des entrées contenant
Image queue worker. - Confirmez que le hook
as24ci_image_queue_processest présent dans la liste des événements WP-Cron. - 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.
- 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églage | Emplacement | Description |
|---|---|---|
| Activer l'importation automatique | Importations et limites → Automatisation | Interrupteur principal pour l'automatisation WP-Cron. Par défaut : désactivé. |
| Planification | Importations et limites → Automatisation | Fréquence d'importation. Par défaut : toutes les heures. |
| Heure de début | Importations et limites → Automatisation | Pour les planifications quotidiennes / deux fois par jour. Par défaut : 06:00 (fuseau horaire du site). |
| Intervalle personnalisé (minutes) | Importations et limites → Automatisation | Pour la planification personnalisée. Minimum : 15 minutes. Par défaut : 30 minutes. |
| Mode cron | Importations et limites | Contrôle le type de déclencheur utilisé (wp-cron ou server-cron). |
| Jeton de cron | Importations et limites | Jeton secret pour l'endpoint REST. Généré automatiquement. Peut être régénéré. |
| Max de véhicules par exécution | Importations et limites | Limite le nombre de véhicules traités par exécution automatique. 0 = illimité. |
| Mode file d'attente d'images | Importations et limites | Place 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ôme | Cause probable | Vérification |
|---|---|---|
| Les importations ne s'exécutent pas automatiquement | Importation automatique désactivée | Activez l'automatisation dans les réglages d'Importations et limites |
as24ci_scheduled_import absent de la liste cron | L'événement a été déplanifié après un changement de réglages | Réenregistrez les réglages d'automatisation pour le replanifier |
DISABLE_WP_CRON est défini | WP-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 journal | Verrou d'importation obsolète | Attendez 40 minutes ou supprimez l'option transitoire as24ci_cron_import_running |
| L'endpoint REST renvoie un code HTTP 403 | Le 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 429 | Le verrou d'importation est actif | Attendez et réessayez ; si le problème persiste, supprimez l'option transitoire du verrou |
| L'endpoint REST renvoie un code HTTP 500 | Exception pendant l'importation | Vérifiez le journal pour plus de détails |
| API REST non accessible | Permaliens non configurés, ou API REST bloquée | Régénérez les permaliens ; vérifiez les réglages de l'extension de sécurité |
| La file d'attente d'images ne traite rien | WP-Cron ne peut pas se déclencher ou le verrou de la file d'attente d'images est obsolète | Vé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 à jour | Le 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 catalogue | Temps d'exécution PHP trop court | Utilisez le cron du serveur ; contactez l'hébergeur pour augmenter le temps d'exécution max de PHP |