Disabilitare il Cron di WordPress

WordPress gestisce alcune azioni automatiche, tra cui invio delle email e pubblicazione degli articoli programmati, attraverso un sistema di Cron concepito in maniera un po’ particolare rispetto al normale.
Scoprilo in questa guida, comprendendone prima il funzionamento ed imparando poi ad ottimizzarlo… le performance del tuo sito miglioreranno ed i tuoi utenti ti ringrazieranno!
- Leggi l'articolo, ti bastano solo 2 minuti, 30 secondi
Sei di fretta? Scarica il PDF e consultalo quando vuoi!
Sommario
1 Cosa sono i Cron Jobs |
2 I Cron Jobs in WordPress |
3 Il file wp-cron.php |
4 Disabilitare il Cron di default di WordPress |
5 Impostare un Cron a livello server |
6 Commenti |
Cosa sono i Cron Jobs
Si tratta di task programmati per essere eseguiti esattamente in determinate date e/o orari e ripetuti sistematicamente, così da automatizzare eventi ricorrenti che altrimenti dovresti eseguire manualmente ogni tanto.
Per rendere l’idea, la sincronizzazione dell’inventario di magazzino di un e-commerce con un marketplace e l’invio di newsletter sono esempi di azioni sistematiche che vanno eseguite ad intervalli di tempo determinati e di solito la creazioni di un Cron Job avviene a livello sistema operativo sul server, impostando l’esecuzione di una certa URL che contiene le funzioni e gli script adatti allo scopo.
I Cron Jobs in WordPress
Anche WordPress ha un proprio sistema di Cron, che consente di svolgere alcune funzioni di base, come ad esempio la pubblicazione programmata degli articoli, impostando una data di pubblicazione.
Ma in WordPress la gestione dei task automatizzati è leggermente diversa da quella concepita per i sistemi Unix ed utilizza un sistema più semplice: esegue i comandi schedulati solo quando un visitatore accede al sito e l’ora di schedulazione è trascorsa.
Ma in che modo?
Il file wp-cron.php
Tutte le funzioni di gestione delle schedulazioni sono contenute nel file wp-cron.php presente nella cartella principale dell’installazione di WordPress, file che viene richiamato ad ogni esecuzione di una qualsiasi pagina del sito.
Semplifichiamo con un esempio: ipotizza di aver programmato in WordPress con un Cron Job l’esecuzione di una funzione alle ore 01:00:00 del giorno 15/01/2018. Se la prima visita dopo quella data/ora di un utente del sito avvenisse alle ore 08:00:00, l’esecuzione delle azioni programmate si attiverebbe proprio a quell’ora.
Ma questo sistema porta subito alla luce due grossi svantaggi:
Incremento dei tempi di caricamento della pagina: ad ogni visita, il file wp-cron.php viene incluso prima della visualizzazione del contenuto, le funzioni al suo interno vengono eseguite per capire se esiste una qualche azione programmata da eseguire ed in caso affermativo vengono eseguite.
Ritardo ed incertezza nell’esecuzione: come avrai notato nell’esempio precedente le azioni programmate sono state eseguire con un ritardo di ben 7 ore, ma se per assurdo non ci fossero stati utenti, quell’azione non sarebbe mai stata eseguita!
Quindi, sia se affidiamo ai Cron Jobs l’esecuzione di script che non possono avere ritardi rispetto all’orario stabilito (come ad esempio trasmissione di dati, sincronizzazioni, ecc), sia per risparmiare tempo di caricamento della pagina, è necessario trovare un modo per aggirare il problema.
Disabilitare il Cron di default di WordPress
La prima cosa da fare, è disattivare il comportamento di default del Cron, risultato ottenibile aggiungendo al file:
wp-config.php
che trovi nello spazio FTP del tuo sito, la seguente direttiva:
define( 'DISABLE_WP_CRON', true );
In questo modo, il sistema di gestione dei Cron Jobs di WordPress viene disabilitato.
Se però ti fermassi a questo punto, nessuna delle azioni programmate verrebbe eseguita!
È necessario quindi far sì che il file wp-cron.php venga richiamato con un vero Cron, impostato a livello server. In questo modo, le performance del tuo sito saranno più elevate, soprattutto in presenza di un gran numero di utenti!
Impostare un Cron a livello server
La creazione dei Cron Jobs a livello server può essere fatta nella maggior parte dei casi dal pannello di controllo (Plesk, cPanel, ecc.) messo a disposizione dal tuo hosting e purtroppo elencare tutte le procedure è impossibile, quindi ti consiglio di leggere le guide messe a disposizione da ogni web hosting o di contattarne l’assistenza per capire come fare
Ma per quanti come me hanno deciso di affidarsi ad hosting SiteGround, ecco il link alla guida ufficiale:
Se non hai ancora scelto un hosting, o vuoi cambiare il tuo attuale, ti consiglio di leggere l’articolo: