[Moodle 2.9.2] Questo benedetto CRON

[Moodle 2.9.2] Questo benedetto CRON

di Giuseppe Marzano -
Numero di risposte: 23

Buongiorno a tutti,

sono alla prima esperienza con Moodle e leggendo qua e la mi sono imbattuto anch'io in CRON. Se lancio lo script via web la risposta è "Command line scripts can not be executed from the web interface". La mia domanda è: il mio hosting è aruba, come faccio a configurare cron?

Grazie

Giuseppe

Media dei voti:  -
In riposta a Giuseppe Marzano

Re: [Moodle 2.9.2] Questo benedetto CRON

di Andrea Bicciolo -
Immagine Core developers Immagine Plugin developers Immagine Translators

In Moodle 2.9 per default l'elaborazione del cron via web è disabilitata. Per modificare l'impostazione, recati in

  • Amministrazione del sito > Sicurezza > Politiche del sito

In questa pagina togli la spunta a "Esecuzione cron solamente da linea comando | cronclionly".

Se configurerai il cron per essere invocato via web, può essere anche utile impostare una chiave per la chiamata tramite l'apposito parametro "Cron password per accesso remoto | cronremotepassword" che troverai nella stessa pagina.

In riposta a Andrea Bicciolo

Re: [Moodle 2.9.2] Questo benedetto CRON

di Giuseppe Marzano -

Grazie Andrea per la risposta. Purtroppo anche togliendo il flag, impostando una password come suggerito e utilizzando la sintassi per richiamare il cron, il browser risponde allo stesso modo: "Command line scripts can not be executed from the web interface"

In riposta a Giuseppe Marzano

Re: [Moodle 2.9.2] Questo benedetto CRON

di Andrea Bicciolo -
Immagine Core developers Immagine Plugin developers Immagine Translators

Gli script cron di Moodle sono due, uno da invocare via CLI, l'altro via web. Molto probabilmente stai tentando di invocare lo script "../admin/cli/cron.php" via web, quando invece via web dovresti invocare "../admin/cron.php".

La differenza di chiamata dei due script è illustrata nella documentazione:

In riposta a Andrea Bicciolo

Re: [Moodle 2.9.2] Questo benedetto CRON

di Giuseppe Marzano -

Eccallà... arcano risolto... infatti invocavo quello dentro /cli

Bene, grazie... ultima domanda: ogni quanto va fatta questa operazione?

Giuseppe

In riposta a Giuseppe Marzano

Re: [Moodle 2.9.2] Questo benedetto CRON

di Andrea Bicciolo -
Immagine Core developers Immagine Plugin developers Immagine Translators
A partire da Moodle versione 2.7 puoi schedulare il lancio dello script cron ogni minuto, è ora presente un sistema di lock interno per i task cron in elaborazione.
In riposta a Andrea Bicciolo

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Cosmo Furno Palumbo -
Perdonatemi se riprendo questa vecchia discussione ma sto impazzendo appresso ad una installazione (Aruba), per questo una sola precisazione: il lancio dello script cron ogni minuto non è schedulabile da Moodle ma da sistema operativo... o sono io a fare confusione?
Il tutto perché, da quello che ho visto finora, non mi sembrerebbe che Aruba permetta di selezionare una maggiore frequenza di 30 minuti.

P.S. Ovviamente, alla data attuale, non mi riferisco a Moodle 2.9.2 bensì alla 3.8.2
In riposta a Cosmo Furno Palumbo

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Cristina Pansa -
Ciao,
io ho il tuo stesso problema. Il cron è attivo perchè manualmente viene lanciato, ma con aruba non posso lanciarlo ogni minuto ma solo ogni mezz'ora. Per di più io non riesco a far funzionare i backup automatici.

Cristina
In riposta a Cristina Pansa

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Cosmo Furno Palumbo -
Ciao, non ho capito cosa intendi per "non riesco a far funzionare i backup automatici".

Io li ho appena configurati e, molto sinceramente, non ho sentore se funzionino o meno, considerato anche che la piattaforma al momento è vuota. Però, posso dire con certezza che su di un altro server gestito in toto da me, funzionano senza problemi.

Se provi a dare qualche maggiore dettaglio, semmai vediamo se riesco ad aiutarti; credo però si debba aprire un post a parte... per non fuorviare questa discussione sul cron, seppur abbastanza affine. ammiccante
In riposta a Cosmo Furno Palumbo

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Barbara Barbara -
Ciao a tutti...scusate, questo cron a cosa serve? mi sono accorta che anche a me da la segnalazione
Lo script cli/cron.php non è stato eseguito da almeno 24 ore
In riposta a Barbara Barbara

Ri: [Moodle 2.9.2] Questo benedetto CRON

di Matteo Scaramuccia -

Ciao Barbara,
il cron di Moodle regola tutti i processi di Moodle "che richiedono del tempo" per essere completati per cui vengono eseguiti non immediatamente e contestualmente all'evento che li ha attivati.

Un esempio: l'invio delle notifiche dovute alla sottoscrizione di un forum in attesa di invio dopo lo scadere del tempo dato per editare il messaggio (30 minuti), come le notifiche che ti arrivano da questa Community ammiccante.

HTH,
Matteo

In riposta a Cosmo Furno Palumbo

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Vincenzo DI MAURO -

Il comando non è configurabile da moodle ma da terminale!!!

Eseguire quindi da terminale, su sistemi basati su Debian:

Punto 1) crontab -u www-data -e

Questo aprirà una finestra dell'editor.

Per eseguire lo script cli cron ogni 2 minuti, aggiungere la riga: 

Punto 2) 2 * * * * /usr/bin/php /percorsomoodle/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 2 minuti.

Punto 3) Il comando systemctl status cron (Visualizza l'esecuzione di crontab e soprattutto lo STATUS)

La prima cosa da fare è proprio l'ultima (Punto 3), ovvero controllare se Crontab è Attivo (Lo vedi in output di colore verde!)

La seconda cosa da fare è quella di essere sicuro che il comando al punto 2 sia ben formattato!!!

Saluti!

In riposta a Vincenzo DI MAURO

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Matteo Scaramuccia -

Ciao Vincenzo,
grazie per la guida!

ma da terminale!!!

Eh eh, dipende appunto se hai accesso ad un terminale - o equivalente - quando hai un piano di Hosting condiviso... cosa purtroppo non possibile con quanto fornito da Aruba per gli spazi utilizzati da alcuni utenti qui nella Community ammiccante.

HTH,
Matteo

In riposta a Cosmo Furno Palumbo

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Sergio Rabellino -
Immagine Particularly helpful Moodlers Immagine Plugin developers

Posto che questo thread revamping è più sui problemi di chi ha scelto Arriba (voluto) come provider, valutate ad esempio servizi free come https://cron-job.org e vi levate il pensiero dei 30 minuti.

In riposta a Sergio Rabellino

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Cosmo Furno Palumbo -
Purtroppo a volte la scelta di un provider anziché un altro non è per scelta individuale ma anche per "imposizione"... ammiccante

...premesso ciò, dovendomi adattare a quello che mi hanno dato, ho provato il servizio che hai proposto ma (evidentemente da sprovveduto) non capisco come mai non riesco a farlo funzionare; il cron-job creato continua a fallire riportando nel report il messaggio di errore "301 Moved Permanently".
Se la riga di comando la lanciassi direttamente da browser "non oppone resistenza" e funziona tranquillamente.

Hai suggerimenti in proposito?
In riposta a Cosmo Furno Palumbo

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Sergio Rabellino -
Immagine Particularly helpful Moodlers Immagine Plugin developers

La url che stai usando non è quella corretta se il web server ti reinvia un 301.

Il browser ovviamente segue questo 301 e chiama la url corretta: se usi firefox o chrome, puoi attivare la console di debug e al tab "network" puoi seguire l'effettivo susseguirsi delle call http.

L'ultima è quella "giusta".

In riposta a Sergio Rabellino

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Gennaro Coppola -
Salve, mi collego alla vostra discussione. Mi sono registrato al sito,creato il cron ma restituisce questo errore:
303 See Other
Cosa sbaglio?
In riposta a Sergio Rabellino

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Cosmo Furno Palumbo -

Perdonami ma sono tonto... se lancio la URL direttamente dal browser funziona... immagino quindi essere la URL corretta. Se la stessa viene utilizzata come cron-job programmato nella consolle del servizio da te suggerito, mi riporta l'errore che dicevo...

Non mi è chiaro che tipo di test mi suggerisci di fare.

In riposta a Cosmo Furno Palumbo

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Cosmo Furno Palumbo -

Credo di aver risolto... quanto meno spero... perché il dubbio mi viene solo dal log che mostra ancora un punto esclamativo ma nei dettagli da OK. E dal mio Moodle, nelle "Notifiche" mi riporta ancora un warning (vedi immagine sotto) che non so se ignorare visto il "Cron" utilizzato...


Praticamente, l'errore non era nella URL sbagliata ma nel corretto inserimento della stessa nel form di Cron-Job. Ovvero, nella creazione del job da eseguire, l'URL non va inserita, come ipotizzato da me, per intero nel riquadro "Title, Address" ma tutto il percorso dopo l'indirizzo del server (/admin/cron.php) ed i parametri eventuali di password vanno esplicitati in una seconda fase, quando, editando il job creato, comparirà la casella evidenziata in rosso (vedi immagine sotto) chiamata "Advanced".

Spero di essere stato chiaro, rimango comunque disponibile per chiarimenti in merito.

In riposta a Cosmo Furno Palumbo

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Cosmo Furno Palumbo -
😪I miei timori sono stati confermati!!!😡

Mi è appena pervenuta una mail da "cron-job.org" che mi avvisa della disabilitazione del job creato perché, testualmente, "Last status: Response data too big". Ecco spiegato anche il motivo del punto esclamativo nei log di esecuzione ed il warning  in piattaforma sull'esecuzione del cron oltre il limite dei 200 secondi.

Avete idee in proposito?
In riposta a Cosmo Furno Palumbo

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Matteo Scaramuccia -

Ciao Cosmo,
non uso quel servizio ma sono due problemi differenti: il primo è Moodle che ti comunica che il cron non gira ogni minuto come consigliato.

Il secondo è invece relativo al servizio e ai limiti con cui viene offerto, https://cron-job.org/en/faq/:

How and how long does cron-job.org visit my URLs?
cron-job.org visits your URLs at the configured dates/intervals and waits for the URL/script to finish execution. If your URL/script does not finish after 30 seconds, it will timeout and we will close the connection to prevent delays in the execution of the jobs of other users. Our system reads up to 1024 bytes of the output of your URLs/scripts. In case your script sends more data, job execution will be aborted. (Please also see the next question.)

What should I keep in mind when developing my cron-controlled scripts?
You should design your scripts in a way that they send as little data as possible, ideally just a short status message at the end of the execution, e.g. "OK" — or simply nothing. In case your script is written in PHP and needs more than 30 seconds of run-time, you can use the following trick to let it continue to execute in the background: Use the PHP function ignore_user_abort(true) to tell PHP to continue the script execution after disconnection.

Quindi in altre parole, funziona spesso ma non sempre perchè ci saranno esecuzioni che dureranno diversi minuti e che produrranno una risposta con molto testo per i log: occorre quindi valutare se introdurre qualche modifica al codice di Moodle affinché il lavoro prosegua nel tempo e che l'output sia limitato a meno di 1KB.

Nota: fatte le considerazioni di cui sopra, secondo me devi utilizzare come URL il percorso intero senza definire nulla nella sezione Custom Headers cioè https://www.tuo-host.it/admin/cron.php?password=<tua-password>;, lasciando correttamente invariato GET.

HTH,
Matteo

In riposta a Matteo Scaramuccia

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Sergio Rabellino -
Immagine Particularly helpful Moodlers Immagine Plugin developers
Nel mio post ho scritto "valutate per esempio...", cioè quello che ho indicato è solo il primo risultato che ha fornito google, per sottolineare che non sei per forza obbligato ad usare il cron di aruba, di servizi simili ce ne sono a iosa, e forse anche meglio di quello che ho indicato.

Concordo - manco ce ne fosse bisogno - con quanto suggerito/indicato da Matteo...
In riposta a Matteo Scaramuccia

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Cosmo Furno Palumbo -
Grazie infinite Matteo della esaustiva risposta, dove riscontro consigli con un fondo di certezza! E non ipotesi...

Effettivamente, avrei dovuto dare uno sguardo alle FAQ del servizio! Scusa.

Detto ciò, riguardo quanto mi dicevi relativamente alla URL da utilizzare, ti dico che messa così come ho fatto funziona, con l'errore di cui discutevamo prima, ma funziona; mentre se inserita, come dicevi tu, senza definire nulla nella sezione Custom Headers e lasciando invariato solo il metodo GET, non funge! Restituisce come codice di errore "301 Moved Permanently". Mah! Misteri del "primo risultato che ha fornito google"?! 😜

Grazie ancora una volta per il supporto ed il "sopporto"! 😊
In riposta a Cosmo Furno Palumbo

Ri: Re: [Moodle 2.9.2] Questo benedetto CRON

di Paolo Mauri -

Buongiorno a tutti,

grazie per i preziosi consigli che mi hanno permesso di impostare correttamente il cron per un'istallazione che ho su hosting Aruba. Come ha suggerito @Cosmo ho usato il servizio https://cron-job.org seguendo le sue indicazioni.

Ho fatto solo una cosa diversamente: nei parametri dell'URL ho inserito l'indirizzo completo (https://www.miodominio.it/moodle/admin/cron.php?password=mia-password) senza aggiungere parametri nella scheda avanzate.

Così sta funzionando correttamente.