Che cos’è un Cron e come funziona la modalità Cron nei moduli Prestalia

Quando si parla di Cron ci si riferisce ad un pianificatore, attivo sulla quasi totalità dei server, che permette di eseguire un comando (nel nostro caso, come vedremo in questo articolo, richiamando l’URL necessario ad avviare la generazione di un file) sul sistema operativo del server ad intervalli programmati e regolari.

La maggior parte dei server dispone di un pannello di controllo (Plesk / cPanel o similari) in cui l’inserimento di questo comando viene facilitato mediante un’interfaccia grafica.

In assenza di ciò occorre impostarlo tramite “riga di comando” nel crontab (il registro in cui vengono salvati i cronjob) del server. In quest’ultimo caso esistono diversi modi per richiamare un URL da terminale, i 3 più diffusi prevedono l’utilizzo dei comandi curl, wget o lynx. In ogni caso in quest’ultima eventualità consigliamo di rivolgersi al proprio webmaster / sistemista.

I cron nei moduli Prestalia di esportazione dati 

Al fine mantenere aggiornati i feed / files CSV XML generati dai moduli di esportazione Prestalia, è quindi prevista la possibilità (parallelamente alla generazione manuale, tramite interfaccia del modulo con tasto “esporta”) di impostare un Cronjob sul proprio server che richiama un URL / indirizzo dedicato (indicato nella schermata “Esporta” del modulo stesso) per avviare la generazione del file.

Questa modalità può essere riprodotta copiando l’indirizzo indicato nel modulo nel proprio browser di fiducia, visitando l’URL in questione si avvierà l’elaborazione che scriverà di fatto il file sul server processando i prodotti selezionati per l’esportazione.

In caso di cataloghi di grandi dimensioni e/o di restrizioni imposte dal proprio hosting (in particolare dovute ai limiti PHP del proprio server con il parametro “max_execution_time” – Questo parametro è visibile nella schermata di esportazione del modulo che state utilizzando), la generazione automatica mediante esecuzione “cron ” potrebbe interrompersi in maniera imprevista, lasciando il file incompleto e richiedendo un numero di “cicli” (ovvero la necessità di richiamare manualmente lo stesso URL) superiore ad 1.

In questi casi, se non c’è la possibilità di agire sul parametro “max_execution_time” perchè il proprio hosting non lo consente (ad esempio molti hosting condivisi / economici limitano volontariamente questa possibilità per non sovraccaricare le risorse del server dove si è ospitati),
è sufficiente richiamare lo stesso URL più volte in successione (assicurandosi che lo script sia terminato tra una esecuzione e l’altra) per permettere al modulo di generare il file completo in più cicli di esecuzione.

I moduli Prestalia sono in grado di riconoscere automaticamente l’eventualità che un processo si sia interrotto per limiti tecnici e dispongono di una particolare modalità denominata “modalità cron” (attivabile dall’interfaccia del modulo) che permette di calcolare, tramite generazione manuale, il numero di volte in cui richiamare il link del cron tramite cronjob per assicurarsi una corretta e completa generazione del file.

La modalità cron deve essere quindi utilizzata di norma una sola volta , in caso di problemi con la generazione ,
per determinare quanti cicli sono richiesti nella generazione mediante cron per ottenere un feed completo.

Esempio: Se dopo aver attivato la modalità cron il valore “cicli” è 3 e il valore “max execution time” è 30 secondi:
Impostare 4 CRON (3 + 1 di sicurezza) a distanza di 40 secondi l’uno dall’altro (30 secondi + 10 di sicurezza)

Riprovate quindi a lanciare i CRON e controllate che sia possibile completare l’esportazione, per verificarlo entrate nel modulo e assicuratevi che lo “Stato ultima esportazione” sia OK.
Nel caso il numero di cron impostati non fosse ancora sufficiente ad ultimare l’export, potrete notare il messaggio in rosso :

A causa di limitazioni server il CRON job non è stato in grado di completare l’esportazione. Fai riferimento al manuale per ulteriori informazioni

In tal caso sarà sufficiente aumentare il numero di cron lanciati in successione, avendo cura che la distanza tra uno e l’altro rispecchi il max_execution_time del proprio server.

Commenti

Commenti

 

Lascia un commento