Che cosa è un CRON?

“Che diavolo è un cron?” Ricevo questa domanda almeno una volta al mese da non chi non è uno sviluppatore. In effetti è un’ottima domanda. Tuttavia la devo dividere in due:

  • Cos’è un CRON? 
  • Cos’è WP-CRON?

Cos’è un CRON?

Fondamentalmente, un cron è un pianificatore basato sul tempo. Gestisce le attività che devono essere eseguite su base regolare in un momento specifico. Ad esempio, se vuoi che il tuo blog WordPress mostri le previsioni del tempo nell’intestazione, ogni mattina devi andare a cercarle e inserirle. Ovviamente puoi chiedere a qualcuno di accedere ogni mattina, andare a prendere le previsioni e incollarle in un widget, ma una strategia migliore è avere un programma che lo fa per te. Questo viene eseguito ogni mattina e parla con un’API per recuperare le previsioni del giorno e aggiornare il database. Il programma che esegue quel programma che la mattina ti recupera il meteo è chiamato CRON. Il nome deriva da “cronologico” per dare l’idea di un programma che gestisce le cose “in ordine di tempo”.

La maggior parte dei sistemi oggigiorno hanno il concept di un cron. I sistemi basati su Unix (Unix, Linux, macOS, etc.) hanno una versione di cron tradizionale e anche se alcuni ci disegnano intorno una bella interfaccia grafica, tutto si riduce a un programma chiamato cron e a un file chiamato crontab.

Il programma cron è sempre in esecuzione in background e ogni minuto dà uno sguardo al crontab e capisce se è necessario fare qualcosa.

Il file crontab contiene le informazioni su quando un programma deve essere eseguito e quale programma deve essere eseguito. Ogni riga rappresenta un’attività diversa. Assomiglia a questo.

1 0 * * * ~/fetchForcast.sh

Anche se può sembrare complicato, tutto ciò che dice al cron è che alle 00:01 ogni giorno deve eseguire un programma chiamato fetchForcast.sh. Ecco una semplice guida alla lettura di un crontab.

# ┌───────────── minuti (0 – 59)

# │ ┌───────────── ore (0 – 23)

# │ │ ┌───────────── giorni del mese (1 – 31)

# │ │ │ ┌───────────── mese (1 – 12)

# │ │ │ │ ┌───────────── giorni della settimana (0 – 6) (da Sabato a Domenica;

# │ │ │ │ │                                   7 è Domenica in alcuni sistemi)

# │ │ │ │ │

# │ │ │ │ │

# * * * * * <comando da eseguire>

  1 0 * * * ~/fetchForcast.sh

Ora che hai la chiave di lettura, è più facile, no?! Questo è davvero tutto ciò che c’è da fare con un cron tradizionale. La maggior parte dei provider come SiteGround ti consente di accedere ai cron per il tuo sistema. A volte devi modificare manualmente il crontab, ma molti provider hanno un’interfaccia più semplice da usare. In ogni caso, hai la possibilità di eseguire programmi in un momento specifico e su base regolare.

Cos’è WP-CRON?

Come la maggior parte delle cose, WordPress fa le cose in modo leggermente diverso. Poiché molti creatori di plugin devono essere in grado di programmare che le cose accadano regolarmente e poiché molti proprietari di siti WordPress non sanno dove si trova il loro crontab, tanto meno come modificarlo, WordPress ha reinventato il cron.

Fondamentalmente, WP-CRON si comporta come un cron tradizionale in quanto uno sviluppatore può “programmare” un’attività da svolgere su base regolare. Tuttavia, a differenza di un cron tradizionale, WordPress non ha un programma che è sempre in esecuzione in background sul tuo server. WP-CRON è un processo che viene chiamato ogni volta che viene visualizzata una pagina, quindi su siti con tante visite funziona bene. Tuttavia, se il tuo sito non è molto movimentato, un’attività pianificata per le 2:00 potrebbe essere eseguita alle 5:24 se nessuno visita il tuo sito fino a quel momento. A volte va bene, altre volte questo è un problema.

Se le attività che devi eseguire sono sensibili al tempo e devono essere eseguite all’orario pianificato, WP-CRON non è il pianificatore che fa per te. Se, d’altra parte, le attività che devi svolgere possono essere eseguite “intorno” all’orario in cui le pianifichi, allora WP-CRON va bene. Molto dipende da quanto è visitato il tuo sito.

Iscriviti per
altri fantastici contenuti!

Iscriviti per ricevere la nostra newsletter mensile con gli ultimi contenuti utili e le offerte SiteGround.

Grazie!

Per favore, controlla la tua email per confermare l’iscrizione.

Quali sono le alternative?

Se hai attività che dipendono dal tempo e il tuo provider non ti consente l’accesso al cron del sistema, hai 2 alternative. Puoi passare a un provider come SiteGround che ti dà questo accesso. Oppure, se questo non è possibile, esistono diversi servizi cron gratuiti o a pagamento. Essi eseguono cron e puoi impostare un cron job da eseguire tramite una bella interfaccia web. Il cron job usa un programma come `curl` o` wget` (pensali come browser headless) che chiama gli URL sul tuo sito per attivare un’attività specifica.

La maggior parte dei plugin che richiedono un cron ti forniranno l’URL da “chiamare” se desideri utilizzare un cron esterno. Tutto quello che devi fare è incollare l’URL, impostare il tempo dell’esecuzione e il gioco è fatto.

CRON è uno strumento prezioso e una volta capito come lavorarci, ne troverai diversi usi. Se utilizzi dei plugin, posso quasi garantire che sul tuo sito siano in esecuzione wp-cron job. Se sei curioso, vai nella repository dei plugin WordPress e cerca cron. Ci sono plugin che puoi installare che ti mostreranno tutte le attività di WP-CRON sul tuo sito. Stai molto attento però. I plugin impostano i cron sempre per un motivo. Se decidi di eliminarli, il plugin che dipende dal cron job smetterà di funzionare.

author avatar
Cal Evans

PHP Evangelist

Una delle persone più amate della community PHP, ha dedicato oltre 16 anni allo sviluppo della straordinaria comunità PHP e al tutoring della nuova generazione di sviluppatori. Siamo estremamente onorati che sia anche un amico molto speciale di SiteGround.

Sviluppo

Inizia la discussione

Sei pronto a iniziare il tuo sito?

Scegli un piano di hosting, crea o trasferisci il tuo sito in pochi click e fai crescere la tua presenza online!

Inizia subito Parla con un esperto