Documentazione · Guida all'integrazione
Configurazione del Cron del Server
Questo documento spiega perché un vero cron job del server è il modo consigliato per gestire le importazioni per il plugin ADP Car Market Hub in produzione, come si relaziona con l'utilità di pianificazione integrata WP-Cron e quali controlli operativi dovrebbero essere attivi una volta avviato.
Quando utilizzare questo documento
Utilizza questo documento se stai:
- Preparando una distribuzione in produzione e decidendo come attivare le importazioni pianificate.
- Migrando da WP-Cron a un cron job lato server perché le importazioni non sono affidabili su un sito a basso traffico.
- Utilizzando un host che consiglia o richiede
DISABLE_WP_CRONper motivi di prestazioni. - Analizzando il motivo per cui le importazioni iniziano in ritardo, vengono eseguite solo durante le ore di punta o non si avviano affatto.
Il pubblico di riferimento è un amministratore di WordPress con accesso alla funzionalità cron del server (ad esempio tramite cPanel, Plesk, il pannello di controllo dell'hosting o l'accesso shell a un crontab di Linux).
Panoramica
WordPress viene fornito con un'utilità di pianificazione integrata chiamata WP-Cron. WP-Cron non viene eseguito continuamente in background; viene controllato quando qualcuno richiede una pagina sul sito. Su un sito trafficato questo di solito va bene, ma presenta alcune limitazioni ben note:
- Su un sito a basso traffico, le attività pianificate vengono eseguite in ritardo o non vengono eseguite affatto perché nessun visitatore attiva WP-Cron.
- WP-Cron viene eseguito all'interno di una normale richiesta HTTP, quindi condivide il limite di memoria PHP e il tempo di esecuzione della richiesta.
- Diversi visitatori che arrivano contemporaneamente possono competere per eseguire la stessa attività pianificata, il che è uno spreco anche se il plugin impedisce internamente le doppie esecuzioni.
Per questi motivi, la configurazione di produzione consigliata consiste nel disabilitare WP-Cron e attivarlo da un vero cron job del server. Il plugin fornisce un endpoint REST dedicato e protetto da token specificamente per questo scopo, in modo che il cron job attivi un'importazione direttamente senza dipendere da un visitatore.
Il plugin offre due modalità cron che puoi scegliere in Car Market Hub → Riferimento a importazione e limiti (la scheda Automazione):
- Modalità WP-Cron (predefinita). La pianificazione WP-Cron del plugin (oraria, ogni 6 ore, due volte al giorno, giornaliera o personalizzata con un minimo di 15 minuti) gestisce le importazioni. Adatta per lo sviluppo, la valutazione e piccoli siti con traffico regolare.
- Modalità cron del server. La pianificazione WP-Cron è disabilitata e l'importazione viene attivata da un cron job del server che chiama l'endpoint REST del plugin. Consigliata per la produzione.
In entrambe le modalità, il lavoro di importazione effettivo viene eseguito dallo stesso runner condiviso all'interno del plugin: l'unica differenza è ciò che lo attiva.
Perché il cron del server è consigliato in produzione
- Tempistiche affidabili. Un cron job del server viene eseguito su una pianificazione fissa, indipendentemente dal fatto che qualcuno stia visitando il sito web in quel momento.
- Nessuna penalità sui tempi di richiesta. Le importazioni non rallentano il caricamento della pagina di un visitatore reale, perché vengono eseguite nel proprio processo PHP.
- Utilizzo prevedibile delle risorse. Un cron job del server viene eseguito una volta per ogni orario pianificato, invece di essere avviato in modo opportunistico da ciascun visitatore.
- Monitoraggio più semplice. Le esecuzioni di cron lasciano una chiara traccia di controllo (nei log del servizio cron e nei log del plugin) e possono essere associate a controlli di uptime esterni.
- Compatibile con gli host che limitano o disabilitano WP-Cron. Alcuni host gestiti limitano la frequenza con cui
wp-cron.phpviene eseguito internamente; un trigger esterno aggira questo limite.
Il cron del server si accoppia bene anche con la coda delle immagini del plugin: un secondo cron job che chiama wp-cron.php a un intervallo breve mantiene la normale coda delle attività di WordPress (inclusa l'elaborazione delle immagini) in esecuzione con una cadenza prevedibile.
Requisiti preliminari
Prima di passare al cron del server, conferma che:
- Il plugin sia installato, attivato e la connessione API funzioni. Vedi Configurazione delle credenziali API e Test di connessione.
- L'ambiente di hosting fornisca l'accesso alla funzionalità cron del server (cron job di cPanel, attività pianificate di Plesk, cron del pannello di controllo dell'hosting o un crontab di Linux tramite SSH).
- Il sito possa essere raggiunto tramite HTTPS dal cron job. Per la maggior parte degli host, il comando cron viene eseguito sullo stesso server e può utilizzare
curlper richiamare il sito. - Tu sia in grado di modificare
wp-config.php(questo è richiesto per impostareDISABLE_WP_CRON). - Siano soddisfatti i requisiti generali di hosting e di cron / elaborazione in background.
Istruzioni passo dopo passo
La scheda Automazione del plugin mostra l'URL esatto del trigger REST e i comandi di esempio per l'installazione corrente. Utilizza quei valori anziché copiare gli URL dalla documentazione.
- Passa il plugin alla modalità cron del server. Apri Car Market Hub → Riferimento a importazione e limiti. Nella scheda della modalità cron, seleziona Server cron e salva. Il plugin nasconderà i controlli di pianificazione WP-Cron e mostrerà una scheda Configurazione del Cron del Server con l'URL del trigger REST, il token segreto e i comandi di esempio.
- Disabilita il cron integrato di WordPress. Aggiungi la seguente riga a
wp-config.php, in qualsiasi punto sopra il commento/* That's all, stop editing! */:
define( 'DISABLE_WP_CRON', true );
Senza questa riga, sia WP-Cron che il cron job del server proveranno a pianificare le importazioni, il che è uno spreco anche quando il blocco interno del plugin impedisce le doppie esecuzioni.
- Copia l'URL del trigger REST. La scheda Configurazione del Cron del Server mostra l'URL nel formato
https://<your-site>/wp-json/as24ci/v1/cron-import?token=<secret>. Utilizza il pulsante Copia in modo che l'URL venga copiato testualmente. Tratta il token come un segreto: chiunque lo possieda può attivare un'importazione. - Aggiungi il cron job di importazione. Nella funzionalità cron del tuo server, crea un job che chiami l'URL del trigger con la cadenza desiderata. Il plugin precompila un esempio come:
*/15 * * * * curl -s "https://<your-site>/wp-json/as24ci/v1/cron-import?token=<secret>" > /dev/null
Regola l'espressione di pianificazione (*/15 * * * * significa ogni 15 minuti) per soddisfare le esigenze del rivenditore. Le importazioni saltano i veicoli invariati grazie al rilevamento delle modifiche, quindi le esecuzioni frequenti sono in genere poco costose.
- Aggiungi un secondo cron job per mantenere attiva la coda delle attività di WordPress. Poiché
DISABLE_WP_CRONdisabilita anche la coda utilizzata dal worker delle immagini del plugin e da altre funzionalità di WordPress, aggiungi un secondo cron job che eseguawp-cron.phpdirettamente a un intervallo breve. L'esempio del plugin utilizza il percorso assoluto dell'installazione di WordPress:
*/5 * * * * php /path/to/wordpress/wp-cron.php > /dev/null 2>&1
Il percorso viene mostrato nella scheda Automazione in base all'attuale installazione di WordPress. Sostituiscilo con il valore visualizzato lì.
- Verifica con un'esecuzione manuale. Da una workstation, chiama l'URL del trigger REST una volta con
curl(o incollalo in un browser). Un'esecuzione riuscita restituisce una risposta JSON che descrive il risultato dell'importazione. Un errore 403 con "Invalid or missing token" significa che l'URL è stato copiato in modo errato. - Verifica alla successiva esecuzione pianificata. Attendi il successivo tick del cron pianificato, quindi apri Car Market Hub → Riferimento Logs (o System & Help) e conferma che Last external cron run mostri un timestamp recente.
Per uno stile di autenticazione alternativo che tiene il token fuori dall'URL (e quindi fuori dai log di accesso e dagli elenchi dei processi), l'endpoint accetta anche un'intestazione Authorization: Bearer <token>. Ad esempio:
*/15 * * * * curl -s -H "Authorization: Bearer <secret>" "https://<your-site>/wp-json/as24ci/v1/cron-import" > /dev/null
Entrambi gli stili sono equivalenti; lo stile con intestazione è preferibile quando l'ambiente cron supporta intestazioni personalizzate.
Riferimento di configurazione
Le impostazioni che influiscono sulla modalità cron del server si trovano in Car Market Hub → Riferimento a importazione e limiti (scheda Automazione).
| Impostazione | Scopo |
|---|---|
| Modalità cron | Consente di passare da WP-Cron a Server cron. Nella modalità Server cron, la pianificazione WP-Cron è disabilitata e viene mostrata la scheda Configurazione del Cron del Server. |
| URL del trigger REST | L'URL completo che il cron job del server deve chiamare. Include il token segreto come parametro di query. Generato dall'URL del sito corrente e dal token memorizzato. |
| Token segreto | Un token casuale di 32 caratteri che autentica il trigger REST. Generato automaticamente al primo utilizzo. Utilizza il pulsante Rigenera token per emetterne uno nuovo (il cron job esistente dovrà quindi essere aggiornato con il nuovo URL). |
| Comandi cron di esempio | Comandi di esempio precompilati che utilizzano l'URL del trigger corrente e il percorso assoluto di wp-cron.php. Utilizza i pulsanti Copia per copiarli testualmente. |
| Numero massimo di veicoli per esecuzione cron | Limita il numero di veicoli che una singola esecuzione di importazione elaborerà. 0 significa illimitato. Utile come limite di sicurezza sugli host condivisi. |
| Modalità coda immagini | Se abilitata, le importazioni pianificate scaricano immediatamente solo la prima immagine per veicolo e mettono in coda le restanti per l'elaborazione asincrona. Consigliata in produzione. |
Note operative
- Un'utilità di pianificazione alla volta. Non eseguire la modalità WP-Cron e la modalità cron del server in parallelo. Il passaggio a Server cron nel plugin disabilita la pianificazione WP-Cron; l'aggiunta di
DISABLE_WP_CRONawp-config.phpcompleta il quadro impedendo a WordPress di eseguire la sua coda cron dalle richieste front-end. - Il runner condiviso. L'endpoint REST, l'hook WP-Cron e il pulsante di amministrazione Trigger now delegano tutti allo stesso runner di importazione all'interno del plugin. Non esiste un "percorso di importazione cron del server" separato con un comportamento diverso.
- Sicurezza della concorrenza. Il runner utilizza un blocco interno basato su transient per impedire l'esecuzione simultanea di due importazioni. Anche se un cron job si sovrappone, la seconda esecuzione viene interrotta immediatamente.
- Riservatezza del token. Il token cron garantisce il diritto di attivare un'importazione. Trattalo come un segreto. Evita di incollare gli URL completi dei trigger in screenshot o ticket; oscura la parte
token=...prima della condivisione. - Rotazione del token. Utilizza Rigenera token ogni volta che sospetti che il token sia esposto o come parte di una rotazione periodica. Dopo la rigenerazione, aggiorna ogni cron job che utilizza l'URL: l'URL precedente verrà rifiutato.
- Posizione dell'endpoint. L'endpoint REST è l'URL REST standard di WordPress
…/wp-json/as24ci/v1/cron-import. Se l'URL del sito WordPress cambia (migrazione HTTPS, cambio di dominio, spostamento multi-sito), aggiorna di conseguenza il cron job. - Heartbeat esterno. Qualsiasi richiesta al sito che includa
?as24ci_cron=1registra un timestamp utilizzato dalla scheda System & Help per confermare che un'utilità di pianificazione esterna è attiva. Questo è puramente informativo e non attiva di per sé un'importazione. - Job complementare per la coda delle immagini. Quando le immagini vengono messe in coda durante le importazioni pianificate, la coda viene elaborata dalla coda delle attività di WordPress. Se hai disabilitato WP-Cron, il secondo cron job che chiama
wp-cron.phpè ciò che mantiene in movimento quella coda. - Non fare affidamento sui test basati su browser. Incollare l'URL del trigger in un browser funziona per la verifica, ma non deve essere utilizzato come trigger effettivo, poiché ciò dipenderebbe dal fatto che qualcuno mantenga un browser aperto.
Controlli operativi dopo la configurazione
Esegui questi controlli una volta dopo essere passato alla modalità cron del server e di nuovo dopo ogni modifica importante (migrazione dell'host, modifica dell'URL, rigenerazione del token):
- Il servizio cron è abilitato. Conferma che la funzionalità cron dell'host sia attiva e che l'account utente che esegue il job disponga dell'autorizzazione per eseguire il comando.
- Il comando pianificato è corretto. L'espressione di pianificazione corrisponde alla frequenza desiderata, l'URL corrisponde al valore mostrato nella scheda Automazione e il secondo job che chiama
wp-cron.phpesiste. DISABLE_WP_CRONè definito. La scheda System & Help conferma che la costante è impostata quando ti trovi nella modalità cron del server.- L'ultima esecuzione del cron esterno è recente. La scheda System & Help mostra un timestamp Last external cron run entro l'intervallo previsto.
- L'ultima esecuzione dell'importazione è recente. Il widget della bacheca e la scheda System & Help mostrano l'attività recente dell'importatore.
- I log non mostrano errori di autenticazione ripetuti. Un pattern di risposte 403 nei log significa che il cron job sta utilizzando un token obsoleto o errato.
- La coda delle immagini si sta svuotando. La scheda Riferimento a importazione e limiti mostra che la coda delle immagini è in fase di elaborazione (o è vuota).
- Monitoraggio esterno opzionale. Configura un monitor di uptime o un avviso a livello di hosting che ti avvisi se il job di importazione smette di essere eseguito.
Verifica questi controlli rispetto alla versione corrente del plugin prima di pubblicare le istruzioni rivolte ai clienti, poiché le etichette dell'interfaccia utente possono evolvere tra le versioni.
Risoluzione dei problemi
| Sintomo | Causa probabile | Cosa verificare |
|---|---|---|
| Il cron job viene eseguito ma la risposta è 403 con "Invalid or missing token". | Il token nell'URL è errato, contiene spazi vuoti o è stato rigenerato dopo la creazione del cron job. | Copia nuovamente l'URL dalla scheda Automation e aggiorna il comando cron. |
| Il cron job viene eseguito ma la risposta è 403 con "Cron token not configured". | Il token non è ancora stato generato. | Apri la scheda Automation per generare automaticamente un token, quindi copia il nuovo URL. |
| Il cron job viene eseguito con successo, ma la scheda System & Help non mostra ancora nessuna esecuzione esterna recente. | Il servizio cron sta chiamando un host diverso (ad esempio HTTP invece di HTTPS, o www. rispetto al nome host canonico) e la richiesta viene reindirizzata lontano da WordPress. | Utilizza l'URL esatto mostrato nella scheda Automation. Verifica che il servizio cron dell'host possa raggiungere il sito tramite HTTPS. |
| Le importazioni sono in esecuzione, ma gli allegati delle immagini smettono di apparire. | DISABLE_WP_CRON è impostato ma nessun cron job chiama wp-cron.php, quindi il worker della coda delle immagini non viene mai eseguito. | Aggiungi il secondo cron job per wp-cron.php come descritto sopra. |
| Le importazioni durano troppo a lungo o raggiungono un limite di memoria. | I limiti PHP CLI dell'host sono più severi del previsto. | Riduci Max vehicles per cron run, mantieni abilitata la modalità coda immagini e consulta Cron and Background Processing. |
| Le importazioni vengono eseguite due volte in rapida successione. | Sono attivi sia la modalità WP-Cron sia un cron job del server. | Passa il plugin alla modalità Server cron e aggiungi DISABLE_WP_CRON a wp-config.php. |
| Il cron job viene eseguito ma restituisce sempre "Another import is already running". | Un'esecuzione precedente non è terminata (batch a esecuzione prolungata, timeout lato host). Il blocco transitorio non è ancora scaduto. | Attendi la scadenza del blocco, quindi esamina l'esecuzione precedente tramite i log del plugin. Vedi Cron Errors. |