Documentation · Annexes

Référence des hooks Cron

Cette annexe répertorie chaque hook WP-Cron et intervalle personnalisé enregistré par l'extension ADP Car Market Hub.

Quand utiliser ce document

Utilisez cette référence lors du diagnostic de tâches planifiées manquées, lors de l'intégration avec les commandes cron de WP-CLI, ou lors de la planification d'un cron système externe. Pour l'explication narrative complète, voir Cron Events And Scheduler et Cron Hooks For Developers.

Aperçu

L'extension utilise WP-Cron pour l'ensemble de son travail d'arrière-plan périodique. WP-Cron est déclenché par les requêtes : les événements se lancent lors du chargement de page suivant ou après leur heure planifiée. Sur un site à faible trafic, planifiez un cron côté serveur pour appeler wp-cron.php ou le point de terminaison REST cron-import de l'extension.

Intervalles personnalisés

Clé d'intervalleDuréeEnregistré dansUtilisé par
as24ci_every_5_minutes300 s (5 min)Fichier principal de l'extension adp-car-market-hub.php. Toujours enregistré.File d'attente de génération IA.
as24ci_every_6_hours6 hAS24CI\Scheduler::add_cron_intervals().Importateur lorsque « Toutes les 6 heures » est sélectionné.
as24ci_customN minutesAS24CI\Scheduler::add_cron_intervals(). N est as24ci_cron_custom_minutes, limité à un minimum de 15 minutes.Importateur lorsque « Personnalisé » est sélectionné.

Les intervalles standard de WordPress (hourly, twicedaily, daily) sont également acceptés par la planification d'importation.

Hooks cron récurrents

as24ci_scheduled_import

  • Propriétaire : AS24CI\Scheduler (Scheduler::CRON_HOOK).
  • Planification : Pilotée par as24ci_cron_schedule (hourly, as24ci_every_6_hours, twicedaily, daily ou as24ci_custom). Pour daily/twicedaily, l'heure de début provient de as24ci_cron_start_time (HH:MM, fuseau horaire du site WordPress).
  • Actif lorsque : as24ci_auto_import_enabled est '1'. Actualisé par Scheduler::reschedule() chaque fois que les réglages d'automatisation sont enregistrés.
  • Rappel (Callback) : Scheduler::run_scheduled_import()Scheduler::run_import('wp-cron').
  • Verrou (Lock) : Option transitoire (transient) as24ci_cron_import_running (durée de vie ~40 minutes). Les verrous obsolètes plus anciens que la durée de vie sont automatiquement effacés.
  • Notes : Partagé avec le bouton d'administration manuel « Déclencher maintenant » et le point de terminaison REST cron. Les trois chemins utilisent le même exécuteur Scheduler::run_import() et respectent le même verrou.

as24ci_image_queue_process

  • Propriétaire : AS24CI\Scheduler (Scheduler::IMAGE_QUEUE_HOOK).
  • Planification : Événements uniques. L'importateur planifie l'exécuteur lorsqu'il met des images en file d'attente au lieu de les télécharger en ligne ; l'exécuteur se replanifie lui-même avec wp_schedule_single_event() tant qu'il reste des éléments dans la file d'attente.
  • Rappel (Callback) : Scheduler::run_image_queue().
  • Verrou (Lock) : Option transitoire (transient) as24ci_image_queue_running (durée de vie ~10 minutes).
  • Taille du lot (Batch size) : Scheduler::IMAGE_QUEUE_BATCH_SIZE (30 images par lot dans le code source actuel — à vérifier avant publication si vous avez besoin d'une valeur exacte).
  • Notes : La file d'attente elle-même est stockée dans l'option as24ci_image_queue. Les statistiques par lot sont écrites dans as24ci_image_queue_last_run pour le widget du tableau de bord et l'onglet Système et aide.

as24ci_process_ai_queue

  • Propriétaire : AS24CI\Ai_Assistant (Ai_Assistant::AI_QUEUE_HOOK) ; le rappel de l'action cron est lié par AS24CI\Scheduler même lorsque l'activation de la fonctionnalité IA est désactivée, de sorte que WP-Cron a toujours un rappel pour le hook.
  • Planification : Intervalle personnalisé as24ci_every_5_minutes (300 secondes). La planification est filtrée par Ai_Assistant::maybe_schedule_ai_queue(), qui applique toutes les conditions préalables (fonctionnalité IA activée, Gemini géré configuré, automatisation active).
  • Rappel (Callback) : Ai_Assistant::process_ai_queue().
  • Notes : Lorsque l'automatisation de l'IA est désactivée ou non configurée, le hook est déprogrammé mais son rappel reste lié afin que les déclenchements manuels depuis l'administration fonctionnent toujours.

as24ci_daily_cleanup

  • Propriétaire : AS24CI\Analytics (Analytics::ANALYTICS_CLEANUP_CRON_HOOK).
  • Planification : daily. Planifié par AS24CI\Plugin lors de l'activation s'il n'est pas déjà planifié ; effacé lors de la désactivation.
  • Rappel (Callback) : Analytics::cleanup_old_data().
  • Comportement : Supprime les lignes d'analyse plus anciennes que as24ci_analytics_retention_days de la table {$wpdb->prefix}as24ci_analytics.

as24ci_pricing_analysis_cron

  • Propriétaire : AS24CI\Pricing_Engine (Pricing_Engine::CRON_HOOK).
  • Planification : daily. Planifié via Pricing_Engine::schedule() ; effacé via Pricing_Engine::clear_schedule() lors de la désactivation.
  • Rappel (Callback) : Pricing_Engine::run_daily_analysis().

as24ci_automated_taxonomy_scan

  • Propriétaire : AS24CI\Data_Quality_Scanner (Data_Quality_Scanner::CRON_HOOK).
  • Planification : daily ou twicedaily, contrôlé par as24ci_dq_scan_frequency. L'heure de la première exécution est dérivée de as24ci_dq_scan_time (HH:MM dans le fuseau horaire du site WordPress). La planification est reconstruite chaque fois que les options associées sont enregistrées.
  • Actif lorsque : as24ci_dq_scan_enabled est '1'.
  • Rappel (Callback) : Data_Quality_Scanner::run_scan().

as24ci_license_refresh

  • Propriétaire : AS24CI\License_Manager (License_Manager::REFRESH_CRON_HOOK).
  • Planification : daily. La première exécution est planifiée une heure après la création de l'événement. Planifié de manière paresseuse (lazy) par License_Manager::ensure_cron_scheduled() sur admin_init et lors de l'activation de l'extension ; effacé via License_Manager::clear_cron() lors de la désactivation.
  • Rappel (Callback) : License_Manager::scheduled_refresh() — effectue une revalidation en arrière-plan de la licence auprès de l'API Platform.
  • Notes : Le rappel cron est toujours lié ; seule la planification est paresseuse afin qu'aucun travail de planification ne s'exécute lors des requêtes ordinaires du front-end.

as24ci_webhook_retry

  • Propriétaire : Sous-système de webhooks.
  • Planification : Événements uniques. Planifié après une tentative de webhook pour effectuer un renvoi bloquant de suivi et pour des tentatives limitées de type exponentiel sur les échecs temporaires (~60 s, ~2 min, ~4 min, jusqu'à trois tentatives au total).
  • Notes : Vérifiez les intervalles exacts et le nombre de tentatives dans le code source actuel avant de les publier dans la documentation client.

as24ci_competitor_watcher_cron (nettoyage hérité uniquement)

Ce hook appartenait à une fonctionnalité supprimée de surveillance des concurrents (Competitor Watcher) et n'est pas une fonctionnalité active de l'extension. Le nom du hook est conservé uniquement pour que Competitor_Watcher::clear_schedule() puisse effacer tout événement planifié restant des anciennes installations lors de la désactivation de l'extension. Il n'y a pas de planification, pas d'action AJAX et pas d'interface d'administration pour cela. Ne vous fiez pas à ce hook à partir d'un code externe.

Déclenchement des importations en dehors de WP-Cron

Deux chemins officiellement pris en charge existent pour déclencher une importation en dehors de WP-Cron, tous deux déléguant au même exécuteur Scheduler::run_import() et respectant le même verrou :

  • Point de terminaison REST cronGET /wp-json/as24ci/v1/cron-import avec authentification par jeton (token). Voir REST Endpoint Reference.
  • Déclencheur d'administration manuel — le bouton « Déclencher maintenant » sur l'onglet d'administration Importations et limites. L'action AJAX sous-jacente est as24ci_trigger_import_now.

L'extension enregistre également un horodatage de pulsation (heartbeat) dans as24ci_last_external_cron_run chaque fois qu'une URL du site est consultée avec le paramètre de requête ?as24ci_cron=1. Cette pulsation est uniquement destinée à la surveillance ; elle ne démarre pas d'importation.

Notes opérationnelles

  • Les événements WP-Cron sur un site à faible trafic peuvent être en retard ou complètement manqués. Pour un comportement prévisible, configurez un cron côté serveur et désactivez WP-Cron dans wp-config.php (define( 'DISABLE_WP_CRON', true );).
  • Lorsque vous désactivez un module de fonctionnalité dans l'administration, ses événements cron associés sont déprogrammés. Ils sont replanifiés la prochaine fois que la fonctionnalité est réactivée et que son register_hooks() s'exécute pendant le démarrage de l'extension.
  • L'exécuteur de la file d'attente d'images utilise des événements uniques plutôt qu'une planification récurrente. Il ne se planifie lui-même que s'il reste des éléments dans la file d'attente.
  • Tous les noms de hooks et constantes ci-dessus reflètent le code actuel de l'extension. Vérifiez par rapport à la version que vous ciblez avant de publier un code d'extension qui observe ces hooks.

Dépannage

  • as24ci_scheduled_import est dans la liste cron mais ne s'exécute jamais. WP-Cron est déclenché par les requêtes. Visitez le site, exécutez wp cron event run --due-now via WP-CLI, ou configurez un déclencheur externe.
  • Les rapports d'exécution d'importation indiquent « Import already in progress ». Le verrou as24ci_cron_import_running est détenu par un autre exécuteur. L'extension efface automatiquement les verrous obsolètes une fois qu'ils dépassent la durée de vie (TTL) ; sinon, la désactivation et la réactivation de l'extension effacent l'option transitoire.
  • La file d'attente d'images s'arrête. Vérifiez l'option as24ci_image_queue_last_run (processed, failed, remaining). S'il reste des éléments mais qu'aucun événement n'est planifié, exécutez « Traiter la file d'attente d'images maintenant » dans l'administration pour relancer l'exécuteur.
  • La file d'attente de l'IA n'avance pas. Confirmez que la fonctionnalité d'IA est activée, que la configuration Gemini gérée est provisionnée (Ai_Config::is_configured()) et que l'automatisation est activée ; sinon, la planification reste désactivée.
  • L'analyse de la qualité des données s'exécute au mauvais moment. Enregistrez les options correspondantes pour déclencher une replanification, et confirmez le fuseau horaire du site WordPress dans Réglages → Général.

Documents connexes