Cron: differenze tra le versioni

Da MoodleDocs.
Riga 94: Riga 94:
* Se si eseguono istanze Moodle diverse sullo stesso server, ciascuna istanza Moodle necessita di un job cron. (Anche un singolo web server Apache può eseguire diverse istanze Moodle su domini diversi utilizzando la sua capacità di host virtuale {{en}} [https://httpd.apache.org/docs/2.2/vhosts/index.html Apache Virtual Host documentation].)
* Se si eseguono istanze Moodle diverse sullo stesso server, ciascuna istanza Moodle necessita di un job cron. (Anche un singolo web server Apache può eseguire diverse istanze Moodle su domini diversi utilizzando la sua capacità di host virtuale {{en}} [https://httpd.apache.org/docs/2.2/vhosts/index.html Apache Virtual Host documentation].)


== Debugging Scheduled Tasks ==
== Debug delle attività pianificate ==


Sometimes, a particular cron task may not be working correctly. In Moodle versions before 2.7 - any cron task that was throwing exceptions would prevent the rest of cron from running. The only way to monitor if cron was completing each time, was to add some automated checking of the output of running cron (e.g. searching for the string "Cron completed at ").
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').


In Moodle 2.7 and later, a single failing scheduled task will not prevent the remaining tasks from completing. When any single scheduled task fails, it is marked as a failure, and scheduled to be reattempted. If the task keeps failing, the next scheduled time will be backed off until it is attempted at most once every 24 hours. But checking the [[Scheduled tasks]] admin page, you can see if any task is currently failing (it will have a non-zero fail delay - which is the number of seconds to wait before reattempting a failed task). A simple way to debug a failing task, is to run it immediately using the [[Administration via command line#Scheduled_tasks|cli scheduled task runner]] and monitor the output.
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 un 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 [[Amministrazione via riga di comando#Operazioni pianificate|cli pianificato]] e monitorare l'output.


==See also==
==See also==

Versione delle 08:41, 8 dic 2018

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 (o chiedere supporto) su come cron è configurato. 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 mettere il comando.

Elaborare il comando cron Moodle

Moodle distribuisce cron in due differenti modi che che utilizzando 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 basato sul web. Si noti che essendo 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

  • Se è possibile scegliere, non utilizzare il cron via web. È probabile che venga rimosso in una versione futura di Moodle.
  • Da Moodle 2.9 in poi, il job cron 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 è richiesta alcuna password.
    • Lo script cron.php non potrà quindi essere eseguito da un browser senza fornire la password utilizzando l'URL http://nome.del.sito/admin/cron.php?password=opensesame.

Trovare il posto giusto per mettere il comando

This really does depend on the system you are using and you should find and read the documentation for your platform or hosting. In most cases getting the Moodle cron to run consists of establishing the correct command (above) and then adding it, and the time to run the command, to some sort of file. This might be either through a specific user interface or by editing the file directly. 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 (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 1 minuto, aggiungere la linea:
*/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 (cron da 1 minuto è possibile).
  • (EN) EasyCron - un fornitore di servizi webcron che elimina la necessità di crontab o altri programmi di pianificazione delle attività per impostare il job cron.

Impostazioni di Cron su Moodle

An admin can set cron execution via command line only or a cron password for remote access in 'Site security settings' in the Site administration. 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 Web che gestiscono la stessa istanza Moodle.
  • Se si eseguono istanze Moodle diverse sullo stesso server, ciascuna istanza Moodle necessita di un job cron. (Anche un singolo web server Apache può eseguire diverse istanze Moodle su domini diversi utilizzando la sua capacità di host virtuale (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 un 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.

See also

Forum discussions: