SupportHost italian

Come disattivare WP-Cron e usare i cron job lato server

WP-Cron è il sistema integrato di WordPress per eseguire le azioni programmate, come il controllo degli aggiornamenti. Questo sistema si attiva ogni volta che c’è un caricamento di pagina, ma per via di questo sistema può dare problemi in siti con troppo o troppo poco traffico.

In questa guida, dopo aver visto meglio perché ha senso disattivare WP-Cron, vedremo come disabilitarlo passo passo e come usare un sistema di cron alternativo a quello nativo.

Iniziamo!

Perché disattivare WP-Cron e rimpiazzarlo con un cron alternativo

WP-Cron è il sistema nativo di WordPress utilizzato per le attività programmate, fra queste rientra la programmazione degli articoli, ma anche i controlli regolari per verificare se sono disponibili aggiornamenti del core di WordPress o di plugin e temi.

Questo cron non funziona a intervalli prefissati, ma viene attivato ogni volta che una pagina viene caricata. Può essere quindi attivato ad esempio quando visiti una pagina del back-end, ma anche quando un visitatore apre una qualsiasi pagina del sito.

La frequenza con cui WP-Cron viene attivato è proprio il suo principale limite. Pensa ad esempio ha un sito che ha pochissime visite durante il giorno, se nessuna pagina viene caricata, non si attivano gli eventi programmati e quindi questo potrebbe interferire con gli aggiornamenti automatici o con la programmazione degli articoli.

Si può anche avere il problema contrario in cui un traffico elevato fa sì che ci siano continuamente chiamate al cron e questo può generare problemi di performance del sito web, rallentandolo.

Se stai avendo problemi con gli eventi programmati sul tuo sito WordPress e la causa è WP-Cron, ti farà piacere sapere che è possibile disattivarlo e usare un sistema alternativo, come i cron lato server.

Come disabilitare WP-Cron

Ci sono principalmente due metodi per disattivare WP-Cron: inserire una direttiva nel file wp-config.php o usare uno strumento di gestione delle installazioni WordPress (se il tuo hosting lo prevede).

Ti mostro passo passo come fare.

Iniziamo dal metodo disponibile per tutti.

Tieni presente che dopo aver disattivato WP-Cron dovrai sostituirlo con un’altra funzione se vuoi che le varie attività pianificate di WordPress continuino a funzionare.

Disattivare WP-Cron dal file wp-config.php

Uno dei metodi per disattivare WP-Cron è andare a inserire una riga di codice nel file wp-config.php del nostro sito WordPress per disattivare questa funzione.

Possiamo accedere ai file del sito tramite file manager o collegandoci via SFTP.

Il file wp-config.php si trova nella root del tuo sito (ad esempio public_html o una cartella con il nome del sottodominio o della sottocartella in base alla tua installazione di WordPress).

Suggerimento: prima di modificare il file wp-config.php è sempre utile creare una copia di backup del file.

Se stai accedendo da file manager, puoi modificare il file wp-config.php dall’editor integrato, ti basta andare a inserire questo codice prima della riga “/* That's all, stop editing! Happy publishing. */“

define('DISABLE_WP_CRON', true);
Disattivare Wp Cron Da Wp Config

Disattivare WP-Cron e rimpiazzarlo tramite WP-Toolkit

Se hai un hosting WordPress SupportHost, hai gli strumenti per velocizzare questa operazione.

Avendo a disposizione WP-Toolkit, infatti, puoi disattivare WP-Cron nativo e creare automaticamente un cron job da cPanel con una singola funzione in un click.

Accedi a cPanel e clicca su “WordPress Management” dal menu di sinistra, se non vedi lì la voce, dovresti vederla nella sezione “Domains”.

Wordpress Management Cpanel

Se non ci sono installazioni presenti in elenco, clicca prima sul pulsante “Scan“. Se hai più siti, individua dalla lista quello che ti interessa, poi dalla sezione Performance attiva l’opzione “Take over wp-cron-php“.

Attiva Take Over Wp Cron Wp Toolkit

Dopo aver attivato l’opzione, vedrai una nuova icona accanto ad essa, cliccandoci verrai rimandato alla sezione Cron jobs di cPanel e potrai vedere il cron job che è stato creato in automatico.

Wp Toolkit Disattiva Wp Cron Opzioni Cron

Se hai bisogno di fare modifiche al cron job, più avanti in questa guida parleremo di come crearne uno manualmente da cPanel.

Come sostituire WP-Cron

Se hai disattivato WP-Cron dal file wp-config.php seguendo il metodo manuale che abbiamo visto prima, ora dovrai sostituire la funzione con un cron in modo che le attività programmate di WordPress possano funzionare. In pratica dovremo fare la stessa cosa che strumenti come WP-Toolkit fanno in automatico.

Ci sono diversi metodi per farlo:

  • creare un cron job da cPanel
  • creare un cron job via SSH
  • usare WP-CLI
  • usare un sistema esterno.

Ti basta scegliere uno dei metodi in base agli strumenti che hai a disposizione o che vuoi utilizzare. Se hai un hosting WordPress SupportHost puoi scegliere il metodo che preferisci perché con tutti i piani WordPress sono compresi la connessione SSH e WP-CLI.

Se non vuoi o non puoi usare questi metodi, l’altra alternativa è usare un sistema esterno per creare un cron job ad esempio con EasyCron o cron-job.org.

Creare un cron job da cPanel

Uno dei metodi più rapidi per creare un cron job è usare la funzione messa a disposizione da cPanel. Accediamo a cPanel e apriamo lo strumento “Cron Jobs” dalla sezione Advanced.

Cron Jobs Cpanel Strumento

Dalle impostazioni possiamo scegliere la frequenza del cron, possiamo anche utilizzare le impostazioni predefinite ad esempio impostando un cron ogni 5 minuti oppure 2 volte ogni ora.

Dopo aver selezionato la frequenza, nel campo “Command” dobbiamo inserire il percorso di php (in genere /usr/local/bin/php) seguito dal percorso del file wp-cron.php in questo modo:

/usr/local/bin/php /home/username/public_html/wp-cron.php >/dev/null 2>&1

Fai attenzione perché nella riga “/home/username/public_html/wp-cron.php” bisogna sostituire “username” con l’username corretto del tuo cPanel.

Alla fine del comando aggiungiamo “>/dev/null 2>&1” in modo da evitare che venga inviata una notifica via email con l’output ogni volta che viene eseguito un cron job.

Aggiungere Cron Job Wp Cron Cpanel

Se si hanno più siti web, si può ripetere l’operazione per ogni sito modificando il percorso “/home/username/public_html/wp-cron.php“. In questo caso è meglio far sì che i cron job vengano eseguiti a intervalli diversi e non tutti contemporaneamente per evitare errori.

Creare un cron job via SSH modificando crontab

Tramite SSH possiamo creare un nuovo cron andandolo a impostare nel crontab, il file che contiene la lista dei comandi programmati nei sistemi Linux.

Per la modifica possiamo usare il comando:

crontab -e

Oppure se vogliamo usare nano come editor, usiamo il comando:

EDITOR=nano crontab -e

Dopodiché ci basta inserire l’intervallo di tempo seguito dal percorso di PHP e da quello del file wp-cron.php, come in questo esempio:

0,30 * * * * /usr/local/bin/php /home/user/public_html/wp-cron.php

Nell’esempio qui sopra il cron job viene eseguito due volte ogni ora.

Se si usa nano si può salvare con CTRL+O ed uscire dalla modifica del file con CTRL+X.

Usare WP-CLI per creare un cron job

WP-CLI è uno strumento da linea di comando che ci permette di gestire un sito WordPress, tra le operazioni che possiamo fare ci sono gli aggiornamenti di core e plugin, l’installazione di nuovi plugin, ma anche operazioni sul database.

In questo caso vedremo come usare WP-CLI per creare un cron job che vada a sostituire la funzione nativa di WP-Cron.

Per modificare il crontab puoi collegarti al server via SSH oppure usare direttamente il terminale di cPanel.

WP-CLI ha di default il comando wp cron event run che permette di eseguire i cron programmati, per far sì che questo comando venga richiamato possiamo aggiungerlo al crontab in modo simile a quanto abbiamo visto prima.

La riga da aggiungere per eseguire il comando ogni 15 minuti è:

*/15 * * * * /usr/local/bin/php /usr/local/bin/wp cron event run --due-now --path=/home/username/public_html > /dev/null 2>&1

Nella riga dovrai sostituire “/home/username/public_html” con il percorso della tua installazione di WordPress. Per assicurarti che il percorso di WP-CLI sia corretto, nel nostro esempio “/usr/local/bin/” ti basta usare il comando:

which wp

Cosa fare se usi WordPress Multisite

Se si usa WordPress Multisite si ha una rete di siti web gestiti da una installazione centralizzata di WordPress. In questo caso, come quando si hanno più siti associati allo stesso account hosting come nel caso di un hosting semidedicato, bisogna far sì che i cron funzionino per tutti i sotto siti della rete.

Si può quindi aggiungere al crontab il comando di WP-CLI, ma aggiungendo anche il comando wp site list che va a estrarre gli URL dei siti della rete.

Il comando completo sarà come questo:

*/15 * * * * /usr/local/bin/php /usr/local/bin/wp site list --field=url --path=/home/username/public_html | xargs -I {} /usr/local/bin/wp cron event run --due-now --url={} > /dev/null 2>&1

Ricordati sempre di modificare il path con il percorso corretto della tua installazione di WordPress.

Verificare se i cron funzionano

Per verificare se i cron funzionano possiamo usare WP-CLI oppure un plugin con WP Crontrol.

Con WP-CLI ci basta dare il comando:

wp cron event list

In questo modo avremo la lista degli eventi programmati, dobbiamo quindi verificare che gli eventi vengano eseguiti ed eliminati dalla lista. Ad esempio se vediamo una serie di eventi programmati tra 4 minuti, ci basta ridare lo stesso comando dopo quel lasso di tempo e verificare se effettivamente il timer si è riazzerato.

Installando il plugin WP Crontrol possiamo vedere la lista degli eventi programmati, se ci sono eventi che non sono stati eseguiti correttamente perché la programmazione è saltata, vedremo degli avvisi come quelli mostrati nella schermata qui di seguito.

Eventi Cron Saltati

Conclusioni

Adesso sai come fare a disattivare WP-Cron e sostituirlo con un sistema di cron lato server. Questo ti aiuta a evitare che la programmazione degli eventi come la pianificazione degli articoli salti in maniera inaspettata. Se hai a disposizione uno strumento come WP-Toolkit, sostituire WP-Cron è estremamente facile, ma anche se non lo hai ci sono dei metodi alternativi che abbiamo visto nel dettaglio in questa guida.

Hai già disattivato e rimpiazzato WP-Cron sul tuo sito? Quale metodo hai usato? Faccelo sapere nei commenti.

Categorie
Indice dei contenuti

    🚀

    Articoli correlati

    Commenti

    Lascia un commento

    Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *