Documentazione · Appendici

Riferimento dei cron hook

Questa appendice elenca ogni hook di WP-Cron e intervallo personalizzato registrato dal plugin ADP Car Market Hub.

Quando utilizzare questo documento

Utilizzare questo riferimento per diagnosticare le attività pianificate non eseguite, durante l'integrazione con i comandi cron di WP-CLI o quando si pianifica un cron di sistema esterno. Per la spiegazione narrativa completa, consultare Eventi cron e pianificatore e Cron hook per sviluppatori.

Panoramica

Il plugin utilizza WP-Cron per tutte le sue attività periodiche in background. WP-Cron è guidato dalle richieste: gli eventi si attivano al caricamento della pagina successivo o successivo all'orario pianificato. Su un sito a basso traffico, pianificare un cron lato server per chiamare wp-cron.php o l'endpoint REST cron-import del plugin.

Intervalli personalizzati

Chiave intervalloDurataRegistrato inUtilizzato da
as24ci_every_5_minutes300 s (5 min)File principale del plugin adp-car-market-hub.php. Sempre registrato.Coda di generazione AI.
as24ci_every_6_hours6 hAS24CI\Scheduler::add_cron_intervals().Importatore quando è selezionato "Ogni 6 ore".
as24ci_customN minutiAS24CI\Scheduler::add_cron_intervals(). N è as24ci_cron_custom_minutes, limitato a un minimo di 15 minuti.Importatore quando è selezionato "Personalizzato".

Gli intervalli standard di WordPress (hourly, twicedaily, daily) sono accettati anche dalla pianificazione dell'importazione.

Hook cron ricorrenti

as24ci_scheduled_import

  • Proprietario: AS24CI\Scheduler (Scheduler::CRON_HOOK).
  • Pianificazione: Gestita da as24ci_cron_schedule (hourly, as24ci_every_6_hours, twicedaily, daily o as24ci_custom). Per daily/twicedaily, l'ora di inizio proviene da as24ci_cron_start_time (HH:MM, fuso orario del sito WordPress).
  • Attivo quando: as24ci_auto_import_enabled è '1'. Aggiornato da Scheduler::reschedule() ogni volta che vengono salvate le impostazioni di automazione.
  • Callback: Scheduler::run_scheduled_import()Scheduler::run_import('wp-cron').
  • Blocco: Transient as24ci_cron_import_running (~40 minuti di TTL). I blocchi obsoleti più vecchi del TTL vengono cancellati automaticamente.
  • Note: Condiviso con il pulsante di amministrazione manuale "Avvia ora" e l'endpoint cron REST. Tutti e tre i percorsi utilizzano lo stesso esecutore Scheduler::run_import() e rispettano lo stesso blocco.

as24ci_image_queue_process

  • Proprietario: AS24CI\Scheduler (Scheduler::IMAGE_QUEUE_HOOK).
  • Pianificazione: Eventi singoli. L'importatore pianifica il worker quando mette in coda le immagini invece di scaricarle in linea; il worker si ripianifica autonomamente con wp_schedule_single_event() finché rimangono elementi nella coda.
  • Callback: Scheduler::run_image_queue().
  • Blocco: Transient as24ci_image_queue_running (~10 minuti di TTL).
  • Dimensione del batch: Scheduler::IMAGE_QUEUE_BATCH_SIZE (30 immagini per batch nel codice sorgente corrente — verificare prima della pubblicazione se è necessario un valore esatto).
  • Note: La coda stessa è memorizzata nell'opzione as24ci_image_queue. Le statistiche per batch vengono scritte in as24ci_image_queue_last_run per il widget della bacheca e la scheda Sistema e Aiuto.

as24ci_process_ai_queue

  • Proprietario: AS24CI\Ai_Assistant (Ai_Assistant::AI_QUEUE_HOOK); la callback dell'azione cron è associata da AS24CI\Scheduler anche quando l'opzione della funzionalità AI è disattivata, in modo che WP-Cron abbia sempre una callback per l'hook.
  • Pianificazione: Intervallo personalizzato as24ci_every_5_minutes (300 secondi). La pianificazione è controllata da Ai_Assistant::maybe_schedule_ai_queue(), che applica tutte le precondizioni (funzionalità AI abilitata, Gemini gestito configurato, automazione attiva).
  • Callback: Ai_Assistant::process_ai_queue().
  • Note: Quando l'automazione AI è disabilitata o non configurata, l'hook non è pianificato ma la sua callback rimane associata in modo che gli avvii manuali dall'amministrazione funzionino comunque.

as24ci_daily_cleanup

  • Proprietario: AS24CI\Analytics (Analytics::ANALYTICS_CLEANUP_CRON_HOOK).
  • Pianificazione: daily. Pianificato da AS24CI\Plugin all'attivazione se non già pianificato; rimosso alla disattivazione.
  • Callback: Analytics::cleanup_old_data().
  • Comportamento: Rimuove le righe di analytics più vecchie di as24ci_analytics_retention_days dalla tabella {$wpdb->prefix}as24ci_analytics.

as24ci_pricing_analysis_cron

  • Proprietario: AS24CI\Pricing_Engine (Pricing_Engine::CRON_HOOK).
  • Pianificazione: daily. Pianificato tramite Pricing_Engine::schedule(); rimosso tramite Pricing_Engine::clear_schedule() alla disattivazione.
  • Callback: Pricing_Engine::run_daily_analysis().

as24ci_automated_taxonomy_scan

  • Proprietario: AS24CI\Data_Quality_Scanner (Data_Quality_Scanner::CRON_HOOK).
  • Pianificazione: daily o twicedaily, controllata da as24ci_dq_scan_frequency. L'orario della prima esecuzione è derivato da as24ci_dq_scan_time (HH:MM nel fuso orario del sito WordPress). La pianificazione viene ricostruita ogni volta che vengono salvate le relative opzioni.
  • Attivo quando: as24ci_dq_scan_enabled è '1'.
  • Callback: Data_Quality_Scanner::run_scan().

as24ci_license_refresh

  • Proprietario: AS24CI\License_Manager (License_Manager::REFRESH_CRON_HOOK).
  • Pianificazione: daily. La prima esecuzione è pianificata un'ora dopo la creazione dell'evento. Pianificato in modo lazy da License_Manager::ensure_cron_scheduled() su admin_init e all'attivazione del plugin; rimosso tramite License_Manager::clear_cron() alla disattivazione.
  • Callback: License_Manager::scheduled_refresh() — esegue una riconvalida in background della licenza rispetto alla piattaforma API.
  • Note: La callback del cron è sempre associata; solo la pianificazione è lazy, in modo che nessuna attività di pianificazione venga eseguita sulle normali richieste del frontend.

as24ci_webhook_retry

  • Proprietario: Sottosistema Webhooks.
  • Pianificazione: Eventi singoli. Pianificato dopo un tentativo di webhook per eseguire un rinvio bloccante di follow-up e per tentativi di riprovo limitati di tipo esponenziale su errori temporanei (~60 s, ~2 min, ~4 min, fino a tre tentativi in totale).
  • Note: Verificare gli intervalli esatti e il numero di tentativi nel codice sorgente corrente prima di pubblicarli nella documentazione per il cliente.

as24ci_competitor_watcher_cron (solo pulizia legacy)

Questo hook apparteneva a una funzionalità Competitor Watcher rimossa e non è una funzionalità attiva del plugin. Il nome dell'hook viene mantenuto solo affinché Competitor_Watcher::clear_schedule() possa cancellare qualsiasi evento pianificato rimanente da installazioni precedenti alla disattivazione del plugin. Non esiste alcuna pianificazione, nessuna azione AJAX e nessuna interfaccia utente di amministrazione per esso. Non fare affidamento su questo hook da codice esterno.

Attivazione delle importazioni al di fuori di WP-Cron

Esistono due percorsi ufficialmente supportati per attivare un'importazione al di fuori di WP-Cron, entrambi delegati allo stesso esecutore Scheduler::run_import() e che rispettano lo stesso blocco:

  • Endpoint REST cronGET /wp-json/as24ci/v1/cron-import con autenticazione tramite token. Vedere Riferimento endpoint REST.
  • Attivazione manuale dall'amministrazione — il pulsante "Avvia ora" nella scheda di amministrazione Importazione e limiti. L'azione AJAX sottostante è as24ci_trigger_import_now.

Il plugin registra anche un timestamp di heartbeat in as24ci_last_external_cron_run ogni volta che un qualsiasi URL del sito viene visitato con il parametro di query ?as24ci_cron=1. Questo heartbeat serve solo per il monitoraggio; non avvia un'importazione.

Note operative

  • Gli eventi WP-Cron su un sito a basso traffico possono essere in ritardo o non essere eseguiti affatto. Per un comportamento prevedibile, configurare un cron lato server e disabilitare WP-Cron in wp-config.php (define( 'DISABLE_WP_CRON', true );).
  • Quando si disabilita un modulo di funzionalità nell'amministrazione, i relativi eventi cron vengono annullati. Vengono ripianificati la volta successiva che la funzionalità viene riabilitata e il suo register_hooks() viene eseguito durante il bootstrap del plugin.
  • Il worker della coda di immagini utilizza eventi singoli anziché una pianificazione ricorrente. Si pianifica solo se sono rimasti elementi nella coda.
  • Tutti i nomi degli hook e le costanti sopra indicati riflettono il codice corrente del plugin. Verificare rispetto alla versione di destinazione prima di pubblicare codice di estensione che osserva questi hook.

Risoluzione dei problemi

  • as24ci_scheduled_import è nell'elenco dei cron ma non viene mai eseguito. WP-Cron è guidato dalle richieste. Visitare il sito, eseguire wp cron event run --due-now tramite WP-CLI o configurare un trigger esterno.
  • I report di esecuzione dell'importazione indicano "Importazione già in corso". Il blocco as24ci_cron_import_running è attivo da parte di un altro esecutore. Il plugin cancella automaticamente i blocchi obsoleti una volta superato il TTL; in caso contrario, la disattivazione e la riattivazione del plugin cancellano il transient.
  • La coda delle immagini si interrompe. Controllare l'opzione as24ci_image_queue_last_run (processed, failed, remaining). Se rimangono elementi ma non è pianificato alcun evento, eseguire "Elabora coda immagini ora" nell'amministrazione per riavviare il worker.
  • La coda AI non avanza. Confermare che la funzionalità AI sia abilitata, che la configurazione Gemini gestita sia predisposta (Ai_Config::is_configured()) e che l'automazione sia attiva; in caso contrario, la pianificazione rimane disattivata.
  • La scansione della qualità dei dati viene eseguita all'orario errato. Salvare le opzioni pertinenti per attivare una ripianificazione e confermare il fuso orario del sito WordPress in Impostazioni → Generali.

Documenti correlati