PHP e crontab: programmare l'esecuzione degli script

di: Claudio Garau     29 Gennaio 2009

Crontab è un programma utilizzato all'interno di sistemi operativi Linux e Unix per l'esecuzione di determinate istruzioni ad intervalli di tempo regolari o in un particolare momento predefinito dall'utente (scheduling); il crontab è quindi anche un'operazione per la registrazione di comandi che dovranno essere eseguiti automaticamente sulla base di regole stabilite dall'utente, questa operazione viene generalmente scritta all'interno di file che contengono la lista delle istruzioni da eseguire.

Generalmente un'operazione di pianificazione tramite crontab presenta nella sua procedura alcune costanti:

  • l'intervallo di tempo o il momento specifico in cui dovranno essere eseguiti i comandi;
  • il riferimento all'eseguibile che si occuperà di rendere effettive le istruzioni contenute;
  • i comandi da eseguire, cioè le operazioni da compiere;
  • (opzionalmente) l'utente per cui sono validi i comandi da eseguire.

Un classico esempio di crontab è quello relativo alla realizzazione di un file contenente le istruzioni per pianificare nel tempo la creazione di copie di sicurezza di file, record di database o impostazioni di sistema; si tratta di elementi che subiscono spesso delle modifiche, diventa quindi necessario (anche per questioni di sicurezza) programmare dei backup periodici.

Nel corso di questa breve trattazione vedremo come sia possibile creare file di crontab per eseguire operazioni in un linguaggio solitamente destinato ad altri scopi, la generazione di pagine Web, come PHP.

Crontab PHP e directory di esecuzione

In ambiente Linux il crontab si basa sulla presenza di un demone (daemon in lingua Inglese, cioè processo in esecuzione in background) denominato Crond che, senza alcun intervento dell'utente, accede periodicamente (generalmente una volta ogni minuto) ai contenuti del registro dei comandi programmati (cronjobs) e manda in esecuzione quelli previsti per l'intervallo di tempo corrente o per i quali è terminato il periodo di attesa.

Generalmente queste istruzioni sono salvate in file memorizzati all'interno della directory /etc o delle sue sottocartelle.

Per quanto riguarda i crontab realizzati per PHP la procedura non è sostanzialmente differente: possono essere eseguiti tramite crontab tutti i comandi che è possibile richiamare da shell tramite istruzioni da linea di comando e questo è possibile anche per le istruzioni scritte in PHP grazie al supporto per CLI (Command Line Interface).

Un'istruzione da shell può contenere la lista completa delle istruzioni da eseguire, oppure è possibile richiamare il file contenente le istruzioni grazie all'interprete del linguaggio, ad esempio:

/usr/local/bin/php /directory/file.php

Nell'esempio appena esposto, l'interprete (/usr/local/bin/php) non è necessariamente collocato nella stessa directory del file PHP destinato ad eseguire le istruzioni, ma sarà quest'ultimo a generare l'output; se invece si desidera rindirizzare l'output su un terzo file questo dovrà essere specificato nel comando:

/usr/local/bin/php /directory/file.php > /directory/file

Un file crontab funziona nello stesso modo con alcune sostanziali differenze:

  • il comando (o i comandi) non viene lanciato da Shell ma è scritto e memorizzato in un file;
  • l'utente non dovrà intervenire manualmente per l'esecuzione delle istruzioni (anche se queste dovranno essere ripetute più volte);
  • le istruzioni verranno eseguite in un momento specificato dall'utente.

Guide PHP

Guida Zend Framework

Diventate professionisti dello sviluppo Web. Zend Framework è lo...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Guida PHP con Windows e IIS

Installare ambienti per lo sviluppo e la produzione di applicazioni...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Google AdWords Base

27 Febbraio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

28 Marzo 2012 a Roma
Disponibilità: 7 Posti