Un Cron Job in cPanel esegue un comando a intervalli stabiliti, mentre WP-Cron è il sistema interno di WordPress che avvia le attività programmate quando il sito riceve visite. Per ottenere esecuzioni più regolari è possibile disattivare solamente il trigger automatico di WP-Cron e richiamare wp-cron.php da cPanel, evitando frequenze eccessive e sovrapposizioni.
Le attività pianificate vengono utilizzate per pubblicazioni programmate, invio di notifiche, sincronizzazioni, pulizie, importazioni, backup applicativi e numerose funzioni dei plugin. Una configurazione errata può causare operazioni mai eseguite, processi duplicati, uso elevato di CPU oppure rallentamenti periodici.
Questa guida spiega come creare un Cron Job in cPanel e WP-Cron, come scegliere una frequenza prudente, come verificare il comando e quando è opportuno lasciare la configurazione predefinita.
Differenza tra cron di sistema e WP-Cron
| Sistema | Come viene avviato | Uso tipico |
|---|---|---|
| Cron Job di cPanel | Il server esegue un comando all’orario configurato | Script PHP, comandi CLI, sincronizzazioni e richiamo programmato di WP-Cron |
| WP-Cron | WordPress controlla gli eventi quando riceve una richiesta | Pubblicazioni, plugin, email, pulizie e attività interne |
WP-Cron non è un cron di sistema. Su un sito con poche visite un evento può partire in ritardo, perché WordPress deve ricevere una richiesta. Su un sito molto visitato, invece, il controllo può essere richiamato spesso, anche se WordPress utilizza meccanismi per evitare alcune sovrapposizioni.
Non tutti i siti devono sostituire WP-Cron. Se le attività funzionano, non sono presenti ritardi e le risorse restano normali, la configurazione predefinita può essere sufficiente.
Prima di creare un Cron Job
- identifica esattamente lo script o l’evento da eseguire;
- verifica il percorso completo dell’interprete e del file;
- controlla quanto dura una singola esecuzione;
- evita che una nuova esecuzione inizi prima della precedente;
- crea un backup prima di modificare
wp-config.php; - non inserire password o token direttamente in comandi visibili senza adeguate protezioni.
cPanel raccomanda di lasciare tempo sufficiente tra le esecuzioni. Un cron troppo frequente può avviare più copie dello stesso processo e degradare le prestazioni.
Come creare un Cron Job in cPanel
- accedi a cPanel;
- apri Avanzate → Cron Jobs;
- imposta un indirizzo email solo se desideri ricevere l’output del comando;
- scegli una frequenza da Impostazioni comuni oppure compila minuti, ore, giorno, mese e giorno della settimana;
- inserisci il comando completo;
- seleziona Aggiungi nuovo Cron Job;
- controlla che il nuovo elemento compaia nell’elenco.
Come leggere i cinque campi cron
minuto ora giorno-del-mese mese giorno-della-settimana comando
Per esempio, un’attività ogni 15 minuti utilizza normalmente:
*/15 * * * * comando
Non copiare una pianificazione senza comprenderla. Un asterisco significa “ogni valore” del campo e può trasformare facilmente un’attività prevista una volta al giorno in un comando eseguito ogni minuto.
Come usare un cron reale per WordPress
Prima verifica la cartella esatta dell’installazione. Nell’esempio seguente WordPress si trova in /home/UTENTE/public_html. Il percorso reale dell’account può essere differente.
1. Disattiva il trigger automatico di WP-Cron
Apri wp-config.php e inserisci, prima della riga finale che invita a non modificare oltre:
define( 'DISABLE_WP_CRON', true );
Questa costante non elimina gli eventi salvati da WordPress. Impedisce solamente che il controllo venga avviato dalle normali visite. Devi quindi creare subito il cron sostitutivo: altrimenti le attività pianificate non partiranno.
2. Richiama wp-cron.php da cPanel
Una modalità comune consiste nell’eseguire PHP CLI con il percorso completo:
/usr/local/bin/php -q /home/UTENTE/public_html/wp-cron.php >/dev/null 2>&1
Il percorso PHP può cambiare in base alla versione e alla configurazione CloudLinux. Non presumere che /usr/local/bin/php utilizzi la stessa versione del dominio. Verifica il comando disponibile oppure chiedi all’assistenza Xlogic il percorso corretto per il tuo account.
In alternativa si può richiamare l’URL con curl, ma l’esecuzione locale tramite PHP evita dipendenze da DNS, HTTPS, CDN e firewall:
/usr/bin/curl -fsS https://www.esempio.it/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Quale frequenza scegliere
Una frequenza di 5 o 10 minuti è spesso sufficiente per siti che richiedono puntualità. Per siti informativi con poche attività possono bastare 15 o 30 minuti. Non impostare ogni minuto senza una necessità documentata.
| Scenario | Intervallo iniziale prudente |
|---|---|
| Blog e sito informativo | 15–30 minuti |
| WooCommerce con attività regolari | 5–10 minuti |
| Importazioni o sincronizzazioni pesanti | In base alla durata reale, evitando sovrapposizioni |
| Invii massivi o code | Secondo la documentazione del plugin e i limiti del servizio |
Come evitare esecuzioni sovrapposte
Se uno script dura più dell’intervallo configurato, possono avviarsi più processi. Quando il comando lo consente, utilizza un lock con flock:
/usr/bin/flock -n /tmp/mio-cron.lock /usr/local/bin/php -q /home/UTENTE/script.php
Non riutilizzare lo stesso file di lock per attività differenti. Inoltre un plugin può già implementare una propria coda o un proprio blocco; leggi la relativa documentazione prima di aggiungere wrapper.
Come controllare se il Cron Job funziona
- esegui manualmente il comando da terminale, quando disponibile;
- rimuovi temporaneamente la soppressione
>/dev/null 2>&1per leggere gli errori; - invia l’output a un file di log nella tua home;
- controlla le pubblicazioni e le attività pianificate in WordPress;
- verifica data e ora dei file generati;
- controlla CPU, memoria e processi nella sezione Resource Usage.
Esempio temporaneo di log:
/usr/local/bin/php -q /home/UTENTE/public_html/wp-cron.php >> /home/UTENTE/wp-cron-test.log 2>&1
Dopo il test riduci o ruota il log, perché un file lasciato crescere può consumare spazio e inode.
Errori frequenti
- percorso PHP errato o versione PHP differente dal sito;
- percorso del file incompleto;
- permessi insufficienti;
- cron configurato ogni minuto senza necessità;
DISABLE_WP_CRONattivo senza cron sostitutivo;- due cron che richiamano la stessa attività;
- output inviato via email a ogni esecuzione;
- script che resta bloccato o attende un servizio esterno.
Una configurazione corretta di Cron Job in cPanel e WP-Cron deve essere verificata dopo ogni modifica importante al sito o alla versione PHP.
Quando aprire un ticket Xlogic
Apri un ticket se il Cron Job non parte pur avendo un comando corretto, se non conosci il percorso PHP da utilizzare, se le esecuzioni restano aperte o se Resource Usage mostra picchi regolari coincidenti con il cron.
Indica dominio, comando oscurando token e password, frequenza, data e ora del test, output ricevuto e percorso del file. Non inviare credenziali.
Fonti tecniche ufficiali
Domande frequenti su Cron Job e WP-Cron
WP-Cron è un vero cron di sistema?
No. WP-Cron controlla gli eventi quando WordPress riceve richieste. Un Cron Job cPanel viene invece avviato dal server secondo una pianificazione definita.
Ogni quanto devo eseguire wp-cron.php?
Dipende dal sito. Come punto di partenza prudente usa 5–10 minuti per siti dinamici e 15–30 minuti per siti informativi, evitando intervalli più brevi della durata dell’attività.
DISABLE_WP_CRON cancella gli eventi programmati?
No. Disabilita il richiamo automatico durante le visite, ma gli eventi restano nel database. Devi creare un cron sostitutivo per farli eseguire.
Posso creare un cron ogni minuto?
Tecnicamente sì, ma non è consigliato senza una necessità precisa. Esecuzioni troppo frequenti possono sovrapporsi e aumentare CPU, memoria e processi.
Perché ricevo molte email dal Cron Job?
cPanel invia l’output del comando all’indirizzo configurato. Correggi gli errori e, quando il comando è stabile, reindirizza output e errori con criterio oppure usa un log controllato.