Capitolo 15 · 15.1
Processi Cron: eseguire compiti automaticamente
Lo guardi in un breve video
Un processo cron (o cronjob) è un comando che il server esegue per Lei a orari fissi. Per esempio ogni notte uno script che elimina dati vecchi, ogni ora un collegamento con la Sua contabilità, oppure i compiti pianificati di WordPress o Laravel. Può impostarlo in Processi Cron, sotto Caratteristiche Avanzate.

Regole presso WebOké
Un server viene condiviso con altri siti web. Per questo valgono alcune regole per i processi cron:
- Faccia avviare un'attività al massimo una volta ogni 10 minuti. Lo chiediamo a tutti. Il server non lo impone, ma un'attività che viene eseguita più spesso rallenta il server per Lei e per gli altri. Se ha più attività, non le faccia avviare tutte nello stesso momento.
- Mantenga breve un'attività. Se deve succedere molto, suddivida il lavoro su più cicli.
Creare un'attività
- In DirectAdmin, sotto Caratteristiche Avanzate, clicchi su Processi Cron.
- Clicchi su CREA PROCESSO CRON.
- In Minuto, Ora, Giorno del Mese, Mese e Giorno della Settimana indichi quando deve essere eseguita l'attività (1). Un asterisco * significa "ogni".
- Sotto i campi dell'orario vede in Il processo cron verrà eseguito: (2) in linguaggio semplice quando viene eseguita l'attività. Lo controlli.
- In Comando (3) digiti cosa deve succedere, con percorsi completi (veda sotto).
- Non vuole ricevere un'e-mail ogni volta? Clicchi su EVITA E-MAIL (4).
- Clicchi su CREA (5).

L'attività viene quindi visualizzata nell'elenco. Se desidera eliminarla, la selezioni (1) e clicchi su Elimina.

Esempi di orari
| Minuto | Ora | Giorno del Mese | Mese | Giorno della Settimana | Significato |
|---|---|---|---|---|---|
| 30 | 3 | * | * | * | Ogni giorno alle 03:30 |
| */10 | * | * | * | * | Ogni 10 minuti |
| 0 | * | * | * | * | Ogni ora esatta |
| 15 | 8 | * | * | 1-5 | Nei giorni feriali alle 08:15 (1 è lunedì, 0 o 7 è domenica) |
| 0 | 2 | 1 | * | * | Il primo giorno di ogni mese alle 02:00 |
Può separare i valori con virgole (1,15,30), indicare un intervallo con un trattino (5-7) e un intervallo ricorrente con */ (*/2 significa ogni due). Scelga preferibilmente un orario tranquillo e casuale, come le 03:17 invece di esattamente mezzanotte.
Il comando: percorsi completi
Un processo cron non sa in quale cartella deve iniziare. Utilizzi quindi sempre percorsi completi. Il Suo pacchetto si trova sul server in /home/ seguito dal Suo nome utente DA (veda Trovare il nome del server e il nome utente DA).
Avviare uno script PHP:
/usr/local/bin/php /home/nomeutente/domains/tuodominio.nl/public_html/taak.php
Questo utilizza la stessa versione PHP del Suo sito web, quindi la versione da Select PHP version (veda Scegliere la versione di PHP (Select PHP version)).
Richiamare un indirizzo web (per esempio se il Suo software fornisce un URL cron):
curl --silent https://www.tuodominio.nl/cron.php > /dev/null
WordPress: WordPress avvia i suoi compiti pianificati per impostazione predefinita quando arriva un visitatore. Per un sito molto frequentato o un sito con poche visite, è meglio farlo tramite un processo cron. Inserisca quindi in wp-config.php define('DISABLE_WP_CRON', true); e crei un'attività che avvii ogni 15 minuti /usr/local/bin/php /home/nomeutente/domains/tuodominio.nl/public_html/wp-cron.php.
Laravel: /usr/local/bin/php /home/nomeutente/domains/tuodominio.nl/artisan schedule:run. Attenzione: schedule:run esegue solo i compiti che cadono esattamente nel momento del cron. Se il cron viene eseguito ogni 10 minuti, un compito pianificato per le 08:05 non verrà mai eseguito.
E-mail dopo ogni attività
Se un'attività produce un output (testo o un messaggio di errore), il server può inviarlo via e-mail. Questo avviene solo se ha impostato un indirizzo. Ha tre possibilità:
- E-mail a un indirizzo personale: clicchi su INVIA TUTTO L'OUTPUT DI CRON ALL'E-MAIL, inserisca un indirizzo e-mail e clicchi su SALVARE. Questo vale per tutte le Sue attività. Se lascia il campo vuoto, non arriverà alcuna e-mail.
- Nessuna e-mail per una singola attività: clicchi su EVITA E-MAIL durante la creazione. In questo modo viene aggiunto >/dev/null 2>&1 dopo il Suo comando e l'output di quell'attività viene scartato, anche se ha impostato un indirizzo.
- Output in un file di log: aggiunga dopo il Suo comando >> /home/nomeutente/cron-log.txt 2>&1. In seguito potrà vedere in Gestione file cosa ha fatto l'attività. Pulisca di tanto in tanto questo file.

Suggerimento: imposti un indirizzo finché sta testando una nuova attività. Così vede subito se funziona. Lo disattivi in seguito oppure invii l'output a un file di log. Le e-mail dei processi cron contano ai fini del limite di invio del Suo pacchetto (veda Verzendlimieten en de melding 'message limit reached').
Domande frequenti
La mia attività restituisce "Could not open input file".
Il percorso dello script non è corretto. Controlli il percorso completo in Gestione file: deve iniziare con /home/nomeutente/domains/.
Il mio script funziona nel browser, ma non come processo cron.
Uno script eseguito tramite cron non sa sotto quale sito web viene eseguito: $_SERVER['SERVER_NAME'] e $_SERVER['DOCUMENT_ROOT'] sono vuoti e i percorsi relativi in include funzionano in modo diverso. Utilizzi nello script percorsi completi, oppure richiami lo script tramite curl con l'indirizzo web.
Posso vedere quando un'attività è stata eseguita?
DirectAdmin non tiene traccia di questo per Lei. Faccia quindi scrivere all'attività il proprio output in un file di log, con la data inclusa (per esempio date >> /home/nomeutente/cron-log.txt come primo comando, con ; tra i due).
Cosa fa Esegui su @reboot?
In questo caso l'attività viene eseguita solo quando il server si riavvia, e non a orari fissi. Questa opzione non serve quasi mai per un sito web.
