Introduzione al servizio Cron su Plesk

Cos’è il Cron

E’ un servizio delle macchine UNIX che serve per programmare nel tempo un comando. Con Cron definiamo il servizio, con Crontab il suo file di configurazione . Ad esempio, attraverso un Crontab, si può decidere di schedulare (dall’inglese ‘to schedule’ ) il richiamo di uno script PHP o Perl perchè quest’ultimo effettui un’operazione in dato momento o sistematicamente ogni periodo di tempo impostato.

Il settaggio di un crontab è facilitato se disponiamo per la gestione del nostro server di un pannello di controllo Plesk.

Un esempio di Crontab

Una classica riga di comando di un Crontab è questa

* * * * * usr/bin/php -q /var/www/vhosts/miodominio/httpdocs/scriptdaeseguire.php

I primi asterischi indicano la temporalità e/o ciclicità del comando. L’asterisco è un carattere jolly che può essere sostituito da un numero. In particolare

  • il primo valore indica i minuti di un’ora (valore da 0 a 59)
  • il secondo valore indica le ore di un giorno (valore da 0 a 23)
  • il terzo valore indica il giorno del mese (valore da 1 a 31)
  • il quarto valore indica il mese dell’anno (valore da 1 a 12 ma è possibile usare anche il nome letterale in inglese)
  • il quinto valore indica il giorno della settimana (valore da 0 a 7 ma è possibile usare anche nome letterale in inglese). Sia 0 che 7 indicano la domenica.

“usr/bin/php” indica il percorso all’interprete o al compilatore o al programma generico coinvolto nell’operazione (-q è un parametro specifico che indica il ‘quiet mode’ ossia l’omissione di messaggi superflui di avviso). Questo percorso può essere facilmente indicato dall’amministratore del server.

“/var/www/vhosts/miodominio/httpdocs/scriptdaeseguire.php” indica il percorso fisico sul server che porta allo script o al programma da eseguire. Per ricavare questo percorso con PHP basta utilizzare la funzione phpinfo() .

Es. se io volessi avviare quello script ogni 15 minuti di ogni giorno di ogni mese setterei i primi valori in questo modo
*/15 * * * * usr/bin/php -q /var/www/vhosts/miodominio/httpdocs/scriptdaeseguire.php

Da notare lo slash e poi il numero dell’intervallo temporale settato a 15 per i minuti. Tutti gli altri valori sono a jolly quindi valgono per ogni ora di ogni giorno di ogni mese ecc.

Crontab su Plesk

Settare un Crontab manualmente, con riga di comando su macchine UNIX è roba da specialisti mentre non lo è se si dispone del pannello Plesk per la gestione dei propri domini.
Di seguito la procedura

  1. Login nel proprio pannello Plesk
  2. clic su Domains (Domini in italiano)
    Introduzione al servizio Cron su Plesk
  3. Selezionare il dominio sul quale si vuol creare il Crontab
  4. Nella sezione Hosting cliccare sull’icona del Crontab
    Introduzione al servizio Cron su Plesk
  5. Se sono presenti più System User (Utenti di Sistema) bisogna selezionare quello che deve effettuare l’operazione
  6. Clic su Schedule Task (Programma Azione)
    Introduzione al servizio Cron su Plesk
  7. Adesso bisogna introdurre quei valori che abbiamo spiegato più su
    • Minute – un valore da 0 a 59.
    • Hour – un valore da 0 a 23.
    • Day of the Month – un valore da 1 a 31.
    • Month – un valore da 1 a 12, o seleziona un mese dal menù a discesa.
    • Day of the Week – un valore da 0 a 6 (0 per Sunday), o seleziona un giorno dal menù a discesa.

    altro esempio: per programmare un comando che si attivi il 4,5,6 e 20 del mese si può utilizzare la notazione 4-6,20 (ossia dal 4 al 6 e il 20)

  8. Inseriamo il nostro comando (come precedentemente illustrato ma senza la notazione per la temporalità) nella riga Command
  9. Clicchiamo OK
  10. Clic su Preferences (Preferenze)
    Introduzione al servizio Cron su Plesk
  11. Inseriamo un indirizzo email che servirà per ricevere i log delle operazioni.
  12. Clic su OK

Note finali

Ho avuto qualche difficoltà con alcune righe di comando per script in PHP. Ho notato differenze che non so se imputare alle versioni di PHP installate o alle configurazioni delle macchine (dovrei coinvolgere nel dibattito qualche amministratore di server).
Ad esempio su una macchina con PHP4 e Plesk 8.3.0 ho usato con successo la riga

/usr/local/bin/php -q /var/www/vhosts/dominio.com/httpdocs/script.php

La stessa macchina, dopo il passaggio a PHP5, ha ricominciato a funzionare solo con la riga

cd /var/www/vhosts/dominio.com/httpdocs/; php -q script.php

Ossia con una sintassi lievemente diversa ma che è risultata più digeribile dal nuovo interprete.

Fonti per questo articolo

Interspire – An introduction to cron
Cron
e Crontab su Wikipedia
Video Tutorial per settare un Crontab
Aplus.Net Knowledge Base Support

Introduzione al servizio Cron su Plesk