Documentation · Opérations et maintenance

Maintenance de la file d'attente des images

Ce document explique comment fonctionne la file d'attente asynchrone des images de l'extension, comment surveiller sa progression et comment maintenir, traiter manuellement ou vider la file d'attente en production.

Quand utiliser ce document

Lisez ce document si vous êtes un administrateur de site et que vous devez comprendre pourquoi les images des véhicules n'apparaissent pas encore après une importation, pourquoi la file d'attente des images s'allonge, ou comment gérer les téléchargements d'images sur des sites avec de grands catalogues ou des ressources serveur limitées.

Aperçu

Lorsque le Mode file d'attente d'images est activé (le choix par défaut pour les importations planifiées et déclenchées par REST), l'extension ne télécharge pas toutes les images des véhicules lors de l'exécution de l'importation principale. À la place :

  1. Seule la première image de chaque véhicule est téléchargée immédiatement pendant l'importation.
  2. Les URL des images restantes sont stockées dans une file d'attente persistante dans la table des options WordPress (as24ci_image_queue).
  3. Après chaque exécution d'importation, un worker de file d'attente d'images distinct est planifié en tant qu'événement unique WP-Cron pour traiter les images en attente par lots.
  4. Le worker s'exécute de manière répétée, traitant 30 images par lot, jusqu'à ce que la file d'attente soit vide ou que le budget de temps soit épuisé.

Cette approche permet de maintenir chaque exécution d'importation courte et prévisible, même pour les catalogues contenant de nombreuses images par véhicule.

Pour les importations manuelles déclenchées depuis l'onglet Importer (pas via cron ou REST), le mode file d'attente est désactivé par défaut et toutes les images sont téléchargées immédiatement pendant l'importation.

Comment fonctionne le worker de file d'attente d'images

Le worker de file d'attente d'images :

  1. Acquiert son propre verrou temporaire (as24ci_image_queue_running, TTL 10 minutes) pour empêcher le chevauchement de workers.
  2. Lit la file d'attente actuelle à partir de l'option as24ci_image_queue.
  3. Traite les éléments par lots de 30 images, en vérifiant après chaque lot si le budget de temps (le TTL du verrou moins 60 secondes, soit environ 540 secondes) a été atteint.
  4. Réécrit la file d'attente restante dans la base de données après chaque lot.
  5. Enregistre les statistiques d'exécution (processed, failed, remaining, timestamp) dans l'option as24ci_image_queue_last_run.
  6. Si des éléments subsistent après l'épuisement du budget de temps, planifie immédiatement un autre événement WP-Cron unique afin que le traitement se poursuive lors de la prochaine requête disponible.
  7. Libère le verrou une fois terminé.

Une fois que tous les éléments en file d'attente pour une publication de véhicule ont été traités, le worker reconstruit les métadonnées de publication _as24ci_image_ids à partir des ID de pièces jointes réels dans la base de données et finalise le hachage de l'image, afin que la prochaine exécution d'importation puisse détecter correctement les modifications futures.

Déduplication d'images

L'importateur d'images déduplique les images par URL source. Avant de télécharger une image, il vérifie si une pièce jointe avec les mêmes métadonnées de publication _as24ci_source_url existe déjà. Si une correspondance est trouvée, la pièce jointe existante est réutilisée plutôt que d'être téléchargée à nouveau. Cela s'applique à la fois aux importations immédiates et en mode file d'attente.

Cela signifie que la réexécution d'une importation ou le retraitement de la file d'attente ne créera pas de pièces jointes en double pour les images qui ont déjà été importées avec succès.

Conversion WebP

Si l'option Convertir en WebP est activée, chaque image téléchargée est convertie au format WebP avant d'être ajoutée à la médiathèque. L'extension essaie d'abord GD, puis Imagick en dernier recours. Si aucun des deux n'est disponible ou si la conversion échoue, le format d'image d'origine est utilisé. Les résultats de la conversion sont consignés au niveau d'avertissement en cas d'échec.

La qualité WebP est configurable (1–100, par défaut 80). La valeur de qualité peut également être surchargée au niveau du code via le filtre as24ci_webp_quality.

Surveillance de la file d'attente des images

Onglet Système et aide

  1. Ouvrez ADP Car Market Hub → Système et aide.
  2. Dans le tableau Tâches en arrière-plan, trouvez la ligne Processeur d'images (hook : as24ci_image_queue_process).
  3. La colonne Prochaine exécution indique quand la prochaine invocation du worker est planifiée.
  4. La colonne Statut affiche : - Planifié (vert) — un événement de worker est en file d'attente - En cours d'exécution (orange) — le worker est actuellement actif - Verrou bloqué (rouge) — un verrou obsolète a été détecté ; il sera automatiquement effacé lors de la prochaine tentative d'exécution - Non planifié (orange) — aucun worker n'est actuellement en file d'attente (attendu lorsque la file d'attente est vide)
  5. L'onglet Système et aide affiche un badge d'avertissement lorsque la taille de la file d'attente dépasse 1 000 éléments, indiquant que le traitement des images prend du retard.

Statistiques de la dernière exécution de la file d'attente d'images

L'extension stocke les résultats de l'exécution la plus récente du worker dans l'option as24ci_image_queue_last_run. Ces statistiques comprennent :

  • processed — images téléchargées avec succès lors de la dernière exécution
  • failed — images qui n'ont pas pu être téléchargées
  • remaining — éléments toujours en attente dans la file d'attente
  • timestamp — horodatage Unix de la dernière exécution

Ces valeurs sont affichées dans l'onglet Système et aide et peuvent être utilisées pour évaluer le débit de la file d'attente.

Onglet Importations et limites

L'onglet Automatisation fournit des actions de contrôle manuel pour la file d'attente des images :

  • Exécuter la file d'attente d'images maintenant — déclenche le worker immédiatement via une requête AJAX. Utile lorsque vous souhaitez forcer le traitement des images sans attendre le prochain événement planifié.
  • Vider la file d'attente d'images — supprime tous les éléments en attente dans la file d'attente. Utilisez cette option lorsque vous souhaitez arrêter le traitement des images, par exemple si un lot important d'images incorrectes a été mis en file d'attente. Cela ne supprime pas les images qui ont déjà été téléchargées.

Étape par étape : traiter une file d'attente d'images bloquée

  1. Ouvrez ADP Car Market Hub → Système et aide.
  2. Vérifiez le tableau des tâches en arrière-plan pour la ligne du processeur d'images. Si le statut est Non planifié mais que la file d'attente n'est pas vide (le badge d'avertissement est visible ou les statistiques de la dernière exécution indiquent un nombre restant non nul), l'événement cron du worker n'a pas été replanifié.
  3. Cliquez sur Exécuter la file d'attente d'images maintenant dans la barre d'actions de l'onglet Système et aide pour démarrer immédiatement un worker.
  4. Attendez que l'exécution se termine (généralement de quelques secondes à quelques minutes selon la taille de la file d'attente).
  5. Actualisez l'onglet Système et aide pour vérifier que la file d'attente diminue.
  6. Si le worker s'exécute mais que la file d'attente ne diminue pas (par exemple, si tous les téléchargements d'images échouent), vérifiez le journal pour les entrées [ERROR] et [WARNING] liées à Image queue worker ou Image download failed.

Étape par étape : vider la file d'attente des images

Utilisez cette procédure lorsque vous souhaitez abandonner tous les téléchargements d'images en attente (par exemple, après avoir supprimé un Seller ID ou après une suppression en masse de véhicules).

  1. Ouvrez ADP Car Market Hub → Système et aide ou Importations et limites.
  2. Cliquez sur Vider la file d'attente d'images.
  3. Confirmez l'action lorsque vous y êtes invité.
  4. L'option de file d'attente est vidée et aucun autre téléchargement d'image en arrière-plan n'aura lieu pour les éléments abandonnés.
  5. Les véhicules dont les images restantes ont été effacées n'auront que la première image (téléchargée lors de l'exécution de l'importation) jusqu'à la prochaine importation complète.

Limites de taille de la file d'attente

L'extension impose une limite stricte de 20 000 éléments dans la file d'attente des images. Si la file d'attente dépasse cette limite, un avertissement est enregistré et une passe de déduplication est exécutée pour regrouper les entrées en double. Vérifiez ce comportement dans la version actuelle de l'extension avant de publier.

Référence de configuration

RéglagePar défautObjectif
Mode file d'attente d'images (as24ci_cron_image_queue)Activé (1)Lorsqu'il est activé, seule la première image est importée immédiatement lors des exécutions cron/REST ; les URL restantes sont mises en file d'attente
Nombre max d'images par véhicule (as24ci_max_images)0 (illimité)Limite le nombre total d'images importées par véhicule, quel que soit le mode de file d'attente
Convertir en WebP (as24ci_convert_to_webp)Désactivé (0)Convertit les images téléchargées en WebP avant de les ajouter à la médiathèque
Qualité WebP (as24ci_webp_quality)80Qualité de conversion, de 1 à 100
Taille du lot de la file d'attente d'images30Fixée dans le code (Scheduler::IMAGEQUEUEBATCH_SIZE) ; non configurable dans l'interface utilisateur
TTL du verrou du worker de file d'attente d'images600 secondes (10 min)Durée pendant laquelle le verrou du worker est maintenu avant d'être considéré comme obsolète
Seuil d'avertissement de la file d'attente d'images1 000 élémentsTaille de la file d'attente au-dessus de laquelle l'onglet Système et aide affiche un badge d'avertissement

Notes opérationnelles

  • Le mode file d'attente d'images est uniquement appliqué lors des importations déclenchées par WP-Cron ou le point de terminaison REST cron. Les importations manuelles depuis l'onglet Importer téléchargent toujours toutes les images immédiatement (sauf si la limite maximale d'images s'applique).
  • La file d'attente des images persiste d'une exécution d'importation à l'autre. Si le worker n'a pas fini de traiter un lot précédent lorsqu'une nouvelle importation s'exécute, les nouvelles URL d'images sont ajoutées à la file d'attente existante.
  • Si une publication de véhicule est supprimée après la mise en file d'attente de ses URL d'images mais avant que le worker ne les traite, le worker ignore silencieusement les éléments dont la publication n'existe plus.
  • La file d'attente des images stocke des métadonnées par élément, notamment l'ID de publication du véhicule, le Listing ID, l'URL de l'image et un hachage d'image. Cela permet au worker de finaliser correctement les hachages d'images une fois que toutes les images d'un véhicule ont été traitées.
  • Sur les sites disposant de grands catalogues (des centaines de véhicules avec de nombreuses images chacun), la file d'attente des images peut atteindre plusieurs milliers d'éléments après la première importation. Il s'agit d'un comportement attendu. La file d'attente diminuera régulièrement au cours des exécutions ultérieures du worker, tant que WP-Cron (ou le hook cron du worker de file d'attente d'images) fonctionne.
  • Si l'espace disque dans le répertoire des téléversements est faible, les téléchargements d'images échoueront. L'onglet Système et aide indique la disponibilité de l'espace disque. Libérez de l'espace avant de lancer une importation d'images volumineuse.

Dépannage

SymptômeCause probableÀ vérifier
Les images des véhicules n'apparaissent pas après l'importationLe mode file d'attente est actif et le worker n'a pas encore fonctionnéVérifiez l'onglet Système et aide pour connaître le statut de la file d'attente des images ; cliquez sur Exécuter la file d'attente d'images maintenant
La taille de la file d'attente des images ne diminue pasLe cron du worker ne fonctionne pas, ou tous les téléchargements d'images échouentVérifiez le statut des tâches en arrière-plan ; examinez le journal pour détecter les erreurs de téléchargement d'images
Erreurs Image download failed dans le journalImages sources indisponibles ou délai d'attente de téléchargement dépasséVérifiez que l'annonce est toujours active dans AutoScout24 ; vérifiez la connectivité sortante du serveur
Erreurs de conversion WebP dans le journalGD ou Imagick non disponible ou mal configuréVérifiez le statut de l'extension PHP dans l'onglet Système et aide ; désactivez la conversion WebP si elle n'est pas nécessaire
Badge de verrou bloqué pour le processeur d'imagesLe worker n'a pas libéré son verrou proprementLe verrou s'efface automatiquement après 10 minutes ; cliquez sur Exécuter la file d'attente d'images maintenant pour réinitialiser
La file d'attente s'allonge indéfinimentNombreuses importations avec de grands ensembles d'images ; le worker ne suit pas le rythmeEnvisagez de réduire le nombre maximal d'images par véhicule ; confirmez que WP-Cron est fiable

Documents connexes