Cron

Attenzione: Pagina in costruzione


Il processo 'cron' di Moodle è uno script PHP (parte dell'installazione standard di Moodle) che deve essere eseguito regolarmente in background. Lo script cron di Moodle esegue diverse attività a intervalli pianificati.

IMPORTANTE: Non saltare la configurazione del processo cron sul server altrimenti il sito non funzionerà correttamente.

Il cron dovrà essere eseguito periodicamente. Si consiglia di eseguirlo ogni minuto, come richiesto per l'eliminazione di attività asincrone quando si utilizza il Cestino.

Il programma cron (che esegue lo script Moodle) è una parte fondamentale dei sistemi basati su Unix (inclusi Linux e OS X) poiché è utilizzato per eseguire tutti i tipi di servizi dipendenti dal tempo. Su Windows la soluzione più semplice consiste nel creare un'attività nella Utilità di pianificazione di Windows e impostarla per l'esecuzione a intervalli regolari. Nell'hosting condiviso, si dovrebbe trovare la documentazione sulla configurazione di cron (o chiedere supporto). La maggior parte dei sistemi di hosting condiviso utilizza (EN) CPanel per gestire i siti e di solito ha una sezione per i cron job sul pannello.

In sostanza, l'attività prevede l'aggiunta di un singolo comando all'elenco delle attività cron nel sistema. Sui sistemi basati su Unix questa lista è un file chiamato 'crontab' che tutti gli utenti hanno.

Discussione generale

Questa sezione contiene alcune informazioni generali di base; consultare le sezioni successive a seconda del tipo di server.

Occorrono due passaggi per poter implementare cron:

  1. identificare il comando corretto da eseguire;
  2. trovare il posto giusto nel sistema in cui inserire il comando.

Elaborare il comando cron Moodle

Moodle distribuisce cron in due differenti modi che utilizzano diversi script all'interno dell'installazione di Moodle:

1. Lo script CLI (command line interpreter) che si trova nel percorso:

/path/to/moodle/admin/cli/cron.php 
.

In caso di dubbio, questo è lo script corretto da utilizzare e deve essere eseguito da un programma 'PHP CLI' sul computer. Il comando finale sarà simile a:

/usr/bin/php/path/to/moodle/admin/cli/cron.php 
.

Sarebbe opportuno provarlo sulla riga di comando per vedere se funziona.

Attenzione: Controllare se la versione della riga di comando PHP è compatibile con la versione scelta di Moodle. Il programma PHP da riga di comando è diverso da quello in esecuzione sul sito web e non sempre è la stessa versione.

2. Se, per qualche motivo, non è possibile eseguire lo script CLI, si può utilizzare lo script via web. Si noti che in quanto deprecato, potrebbe essere rimosso nelle versioni future. Deve essere eseguito da un browser e sarà accessibile tramite un URL simile a http://nome.del.sito/admin/cron.php. Si possono utilizzare browser basati sulla riga di comando (ad esempio Wget) di modo che il comando finale possa apparire come:

/usr/bin/wget http://nome.del.sito/admin/cron.php 
.

Ha il vantaggio di poter essere eseguito 'dovunque'. Se non si riesce a far funzionare cron sul computer, provare ad eseguirlo altrove.

Il comando cron di Moodle via web

  • Sarebbe meglio non utilizzare il cron via web. È probabile che venga rimosso in una versione futura di Moodle.
  • Da Moodle 2.9 in poi, il cron job non può più essere eseguito dal web per impostazione predefinita. Si otterrà un messaggio di errore:
!!! Spiacente, l'accesso via internet a questa pagina web è stato disabilitato dall'amministratore. !!!
  • È possibile cambiare questa impostazione da Amministrazione del sito > Sicurezza > Impostazioni di sicurezza del sito deselezionando l'opzione Esecuzione cron solamente da linea comando.
    • Seguirà l'avvertimento Lanciare il cron via web può rivelare informazioni sensibili ad utenti anonimi. Si raccomanda di lanciare il cron solo via linea di comando oppure di impostare una password per l'elaborazione del cron via web.
    • Sarà poi possibile inserire una Cron password per accesso remoto. Se questo campo è vuoto, non sarà richiesta alcuna password.
    • Utilizzando l'URL http://nome.del.sito/admin/cron.php?password=opensesame, lo script cron.php non potrà quindi essere eseguito da un browser senza fornire la password.

Trovare il posto giusto per mettere il comando

Questa impostazione dipende dal sistema che si sta utilizzando; sarebbe meglio cercare e leggere la documentazione per la piattaforma o hosting. Nella maggior parte dei casi ottenere il cron di Moodle da eseguire consiste nello stabilire il comando corretto (vedere sopra), aggiungerlo ed eseguire il comando in una sorta di file. Si potrebbe fare da un'interfaccia utente specifica o modificando direttamente il file.

Se si utilizza la versione CLI è inoltre necessario assicurarsi che il processo cron sia eseguito come utente corretto. Non rappresenterebbe un problema con la versione web.

Esempio - Installazione di cron su Ubuntu / Debian Linux. Supponendo di essere loggati come root:

  • Utilizzare il comando crontab per aprire una finestra dell'editor crontab per l'utente www-data. Questo è l'utente che Apache (il web server) esegue su sistemi basati su Debian
$ crontab -u www-data -e
  • Questo aprirà una finestra dell'editor. Per eseguire lo script cli cron ogni minuto, aggiungere la riga:
*/1 * * * *  /usr/bin/php  /path/to/moodle/admin/cli/cron.php >/dev/null
Nota: Il comando finale > /dev/null invia tutti gli output al bin e impedisce di ricevere un'email ogni minuto.

Impostazione di cron sul sistema

Scegliere le informazioni in base al tipo di server:

Di seguito altre istruzioni per host specifici (controllare che siano aggiornati):

Utilizzare il servizio cron di terze parti

Oltre all'utilizzo di cron ospitato sul server, è possibile utilizzare il servizio cron di terze parti (di solito chiamato webcron):

  • (EN) cron-job.org - è un servizio gratuito (è possibile impostare cron da 1 minuto).
  • (EN) EasyCron - un fornitore di servizi webcron che elimina la necessità di crontab o altri programmi di pianificazione delle attività per impostare il cron job.

Impostazioni di cron su Moodle

Un Amministratore può impostare l'esecuzione del cron tramite la sola riga di comando o una password cron per l'accesso remoto in Impostazioni di sicurezza del sito in Amministrazione del sito.

Cron remoto

Utilizzando la versione via web di cron è perfettamente corretto posizionare il processo cron su una macchina diversa dal server Moodle. Ad esempio, il servizio cron su un server Unix può richiamare la pagina web di cron su un server Moodle basato su Windows.

Pianificazione delle attività

Un Amministratore può pianificare attività cron da Amministrazione del sito > Server > Elaborazioni pianificate; consultare Elaborazioni pianificate.

Esecuzione di cron per diversi server Moodle

  • Le attività possono essere eseguite in parallelo e i processi utilizzano il blocco per impedire l'esecuzione contemporanea di attività; in questo modo cron può essere attivato da più server che gestiscono la stessa istanza Moodle.
  • Se si eseguono istanze Moodle diverse sullo stesso server, ciascuna istanza Moodle necessita di un cron job. (Anche un singolo web server Apache può eseguire diverse istanze Moodle su domini diversi utilizzando la sua capacità di host virtuale; consultare (EN) Apache Virtual Host documentation.)

Debug delle attività pianificate

A volte, una particolare attività cron potrebbe non funzionare correttamente. Nelle versioni di Moodle precedenti alla 2.7, qualsiasi attività cron che generava eccezioni avrebbe impedito l'arresto dell'esecuzione di cron. L'unico modo per controllare ogni volta se cron stava completando l'attività, era aggiungere un controllo automatico dell'output di esecuzione di cron (ad esempio cercando la stringa 'Cron completato a').

Su Moodle 2.7 e versioni successive, una singola attività pianificata non riuscirà a impedire il completamento delle attività rimanenti. Quando una singola operazione pianificata non riesce, viene contrassegnata come errore e pianificata per essere ritentata. Se l'attività continua a non riuscire, la prossima ora pianificata verrà annullata fino a quando non viene tentata al massimo una volta ogni 24 ore. Controllando la pagina di amministrazione Elaborazioni pianificate, è possibile vedere se ci sono delle attività in errore (avranno un ritardo di errore diverso da zero - che è il numero di secondi di attesa prima di ritentare un'attività fallita). Un modo semplice per eseguire il debug di un'attività non funzionante è eseguirlo immediatamente utilizzando il comando cli pianificato e monitorare l'output.

Per saperne di più

  • Elaborazioni pianificate
  • (EN) Cron - articolo di Wikipedia sulla funzione cron.
  • (EN) MDL-50694 - il messaggio cron Si è verificato un time out durante l'attesa del lock non è davvero un errore.
  • Discussione (EN) Windows server: anyone have cron output working? sul forum - questa discussione spiega un trucco piacevole che può essere molto utile quando si verificano problemi con le operazioni pianificate di Windows ed è necessario registrare l'output delle operazioni pianificate in un file log.