Nonostante il poco tempo, torno alla carica con un articolo tecnico che sarà utile ai più.
A volte capita di aver bisogno di eseguire delle operazioni di routine, backup di un db, invio di mailinglist oppure di auguri di compleanno, ecc... per farlo si può ricorrere a degli script php che effettuano un controllo sulla data e registrano un log delle attività, ma per essere eseguiti c'è sempre bisogno di almeno un visitatore che apra la pagina dove sono inclusi questi script. Il metodo funziona in caso si necessiti di un check al giorno, ma è un po' "casereccio".
Nei sistemi operativi Unix ci viene in aiuto il comando crontab.
Per eseguire questo comando bisogna accedere via SSH al proprio server tramite putty o programmi similari, inoltre l'utente con cui ci ci logghiamo deve avere il permesso di utilizzare il demone cron (suona bene, dovrò usarlo per il mio prossimo racconto fantasy).
Il demone viene eseguito automaticamente ogni minuto dal sistema, in caso l'ora coincida con un cronjob da eseguire, allora lancia il comando impostato.
Gli script che vogliamo eseguire periodicamente vanno inseriti nel file crontab dell'utente.
I comandi più importanti per "parlare" con il demone sono i seguenti:
crontab -l // visualizza il file crontab dell'utente corrente
crontab -e // crea o modifica il file crontab dell'utente corrente
crontab -r // cancella il file crontab dell'utente corrente
Una volta eseguito l'editor dei cronjob digitando "crontab -e" nella shell, ci troveremo davanti ad un'amichevole schermata nera, dove dovremo impostare i comandi che vorremo schedulare, seguendo la seguente sintassi:
* * * * * comando da eseguire

Ogni asterisco corrisponde ad uno dei seguenti valori:
1) minuti (0 - 59)
2) ora (0 - 23)
3) giorno del mese (1 - 31)
4) mese (1 - 12)
5) giorno della settimana (0 - 6) (domenica=0)
Esempi di base:
00 8 * * * /usr/lib/php /home/web/www.sito.it/backup.php
(utilizza l'interprete php nella cartella /usr/lib/ per eseguire lo script backup.php alle 8.00 di ogni giorno)
00 8 * 15 * /usr/lib/php /home/web/www.sito.it/backup.php
(esegue lo script backup.php nei giorni 15 di ogni mese alle 8.00)
00 8 * * 0 /usr/lib/php /home/web/www.sito.it/backup.php
(esegue lo script backup.php tutte le domeniche alle 8.00)
Raccomandazione:
non inserite il terzo ed il quinto campo contemporaneamente (il numero del giorno ed il giorno della settimana), perchè si escludono a vicenda ed averli entrambi genera un errore.
|