Ogni applicazione web mediamente grossa e strutturata necessita di operazioni periodiche che eseguono funzioni in modo automatico.

Immagina di avere un e-commerce per vendere online i tuoi prodotti, potresti aver bisogno di automatizzare:

  • Invio di newsletter ai tuoi clienti con le novità riguardanti i tuoi prodotti
  • Notifica di cambio di prezzo ai clienti che hanno inserito un prodotto nel carrello ma non hanno ancora completato l’acquisto, o la disponibilità di un prodotto che al momento dell’acquisto non era presente a magazzino
  • Aggiornamento delle valute presenti nel tuo store
  • Notifica delle spedizioni

Cronjob su sistemi Unix-like

Sui sistemi Unix-like esiste un potente demone (un programma eseguito in background) chiamato Cron che lavora attraverso il comando crontab e permette di pianificare un set di comandi Unix che verranno eseguiti ad intervalli periodici sul sistema operativo in uso.

Cron è possibile utilizzarlo in diversi contesti: aggiornamenti automatici, backup di file o database, esecuzione di programmi.

Possiamo quindi con le dovute accortezze in termini di sicurezza e prestazioni, mandare in esecuzione uno script php che per esempio invia una newsletter periodica con i nuovi prodotti presenti a listino.

Bene! Abbiamo appena creato un cronjob.

Non voglio dilungarmi troppo sull’utilizzo di Cron in questo articolo: l’utilizzo è semplice e la documentazione a corredo è molto completa, il consiglio che posso darti è quello di approfondirlo per capire come può adattarsi alle tue esigenze. 

E’ sempre possibile utilizzare cron?

La risposta purtroppo é no. Per utilizzare qualunque comando Unix dovresti avere a disposizione l’intero sistema operativo.

Pertanto se hai acquistato una soluzione hosting non è detto che hai disposizione i privilegi necessari per eseguire comandi shell e non potrai pianificare niente di tutto ció.

Possibili alternative a Cron

Non potendo sempre contare su cron abbiamo bisogno di organizzarci con le alternative disponibili.

Software di gestione dello spazio web hosting

Una possibile alternativa può essere data a disposizione dal tuo stesso hosting provider che permette tramite una GUI all’interno della console di amministrazione di indicare un file PHP da mandare in esecuzione e scegliere in quale intervallo di tempo eseguirlo.

Molti hosting provider utilizzano software come Plesk, Cpanel o Webmin che permettono di schedulare in modo semplice i nostri processi.

Esempio di pianificazione con Plesk

Soluzioni tramite CMS

Ci sono poi le soluzione fornite dai CMS più noti: WordPress, Magento e Drupal tanto per fare qualche esempio permettono di schedulare funzioni specifiche.

Un esempio con WordPress e Wp-Cron

WordPress permette di programmare un evento tramite il set di funzioni denominato Wp-Cron .

Forti dell’aiuto di hooks e filtri messi a disposizione dal core di WordPress possiamo creare un’operazione schedulata in modo piuttosto semplice anche senza una conoscenza troppo approfondita di PHP.

Come funziona?

Se non abbiamo i privilegi necessari  per utilizzare Cron, l’idea è quella di eseguire l’operazione durante la prima visita sul sito nella fascia oraria che abbiamo pianificato.

Forse tirerete un sospiro di sollievo se vi dico che comunque contestualmente alla visita viene creata un’istanza parallela che esegue l’operazione pianificata senza che l’esperienza dell’utente venga rallentata.

E’ vero in questo caso dobbiamo saperci accontentare, ma se vogliamo precisione oraria e abbiamo a disposizione cron possiamo integrare molto facilmente le operazioni impostate con Wp-Cron all’interno dei file crontab.

IFTTT può essere la nostra ultima spiaggia

Quando quanto visto prima non basta, possiamo invece pensare di utilizzare diversi servizi di terze parti, tra queste trovo particolarmente efficace l’utilizzo di IFTTT.

IFTTT è un servizio web acronimo di IF THIS THAN THAT, ovvero: se accade una determinata cosa esegui un certo tipo di operazione.

Personalmente lo ritengo geniale in quanto ci permette di attivare recipes ovvero semplici sequenze di comandi attivate a partire da altri noti servizi web (come Gmail, Twitter, Facebook ecc).

Utilizzato principalmente in numerosi contesti di social media marketing permette per esempio di creare auto-responder, monitorare determinati hashtag su Twitter, notificare aggiornamenti da Feed RSS e tantissimo altro.

Le sue potenzialità possono essere infinite e noi, in base alle nostre esigenze, possiamo creare le ricette che più ci aggradano.

Continuamente entrano nuovi servizi a far parte del progetto (da poche settimane è entrato anche Telegram) stimolando ancor di più la nostra fantasia nel creare azioni a dir poco spettacolari.

Come configurare IFTTT nel nostro caso

Se quello che ti ho detto fino adesso riguardo ad IFTTT per quanto sia interessante sembra non avere attinenza con l’argomento che stiamo trattando, ti spiego come poter schedulare operazioni pianificate utilizzando gli strumenti messi a disposizione da questo sito web.

1. Individuiamo i servizi di cui abbiamo bisogno

Entrando su Services è presente una lista di tutti i servizi presenti su IFTTT, da questa lista individuiamo i due necessari per creare la nostra ricetta.

Quello che dobbiamo esprimere tramite gli strumenti a disposizione deve essere: ad intervalli regolari prestabiliti invia una richiesta ad una pagina web del nostro sito web.

La pagina rappresenta lo script PHP che dovrà essere eseguito ed i due servizi di IFTTT che fanno al caso nostro sono: Date & Time Maker.

Screenshot relativo alla lista dei servizi che possono interagire su IFTTT

2. Creiamo una nuova applet

Clicchiamo su New Applet per entrare nella sezione Applet Maker che ci permette di creare la nostra ricetta.

Screenshot relativo ad Applet Maker su IFTTT

3. Impostiamo il servizio This con Date & Time

E’ l’ora di scegliere il servizio This: questo rappresenta il trigger ovvero quel servizio che una volta invocato eseguirà il secondo servizio That.

Scegliamo Date & Time dalla lista e indichiamo ricorrenza e frequenza oraria: vogliamo che venga invocato ogni ora, giorno, settimana o mese? A che ora dovrà essere invocato?

Creazione trigger Date & Time

4. Impostiamo il servizio That con Maker

Ora possiamo scegliere il servizio That che rappresenta ciò che verrà eseguito nel momento che la condizione impostata precedentemente è avverata.
Scegliamo il servizio Maker ed impostiamo una Web Request, dovremo indicare diversi parametri necessari per eseguire la richiesta.

  • URL, la pagina del nostro sito web che contiene la funzione che vogliamo schedulare
  • Method, ovvero il metodo utilizzato nella richiesta e che dovrà essere interpretato nella URL indicata
  • Content/Type, se vogliamo inviare contestualmente alla nostra richiesta dei dati dobbiamo indicare il formato di interscambio. Avremo a disposizione: application/jsonapplication/x-www-form-urlencoded text/plain.
    Sarebbe cosa buona per esempio inviare un token che controllato nella nostra pagina ne impedisce avvii indesiderati
  • Body, qui andiamo ad indicare i dati che vogliamo inviare avendo cura di comunicarli rispettando il formato di interscambio scelto in Content/Type

Clicchiamo quindi su Create Action per creare la nostra ricetta.

Esempio Make Web Request

4. Enjoy yourself!

Abbiamo finito! Cliccando su Finish attiviamo la ricetta e se la configurazione è stata fatta correttamente, le operazioni saranno schedulate negli orari previsti.

Ogni volta che l’operazione sarà eseguita verrà creato un log dell’attività svolta in un registro all’interno di IFTTT.

Perchè IFTTT

E’ semplice da utilizzare grazie alla sua grafica user-friendly, è sempre aggiornato ed entrano continuamente nuovi servizi.

Inoltre è disponibile una comoda app per smartphone e tablet che ci permette di creare ricette e mantenerle monitorate.

IFTTT è uno strumento a dir poco fantastico. Voi come lo utilizzate?
Fatemi sapere le vostre impressioni.

Andrea Debernardi

Andrea Debernardi

Cofondatore di dueclic, sviluppatore e appassionato di tecnologia. Pur essendo fortemente orientato al web la mia curiosità continua e attrazione riguardo le novità non mi precludono nulla nella programmazione. Non mi piace avere limiti perciò tendo a colmarli continuamente.