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'intervalle | Durée | Enregistré dans | Utilisé par |
|---|---|---|---|
as24ci_every_5_minutes | 300 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_hours | 6 h | AS24CI\Scheduler::add_cron_intervals(). | Importateur lorsque « Toutes les 6 heures » est sélectionné. |
as24ci_custom | N minutes | AS24CI\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,dailyouas24ci_custom). Pourdaily/twicedaily, l'heure de début provient deas24ci_cron_start_time(HH:MM, fuseau horaire du site WordPress). - Actif lorsque :
as24ci_auto_import_enabledest'1'. Actualisé parScheduler::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 dansas24ci_image_queue_last_runpour 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é parAS24CI\Schedulermê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 parAi_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é parAS24CI\Pluginlors 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_daysde la table{$wpdb->prefix}as24ci_analytics.
as24ci_pricing_analysis_cron
- Propriétaire :
AS24CI\Pricing_Engine(Pricing_Engine::CRON_HOOK). - Planification :
daily. Planifié viaPricing_Engine::schedule(); effacé viaPricing_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 :
dailyoutwicedaily, contrôlé paras24ci_dq_scan_frequency. L'heure de la première exécution est dérivée deas24ci_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_enabledest'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) parLicense_Manager::ensure_cron_scheduled()suradmin_initet lors de l'activation de l'extension ; effacé viaLicense_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 cron —
GET /wp-json/as24ci/v1/cron-importavec 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_importest dans la liste cron mais ne s'exécute jamais. WP-Cron est déclenché par les requêtes. Visitez le site, exécutezwp cron event run --due-nowvia 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_runningest 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.