Ritorniamo di nuovo con le nostre super guide Laravel! Cosa sono le code e a cosa servono? Una coda è un tipo di struttura dati nella quale vengono inseriti dei task da un producer i quali vengono poi eseguiti da un consumer non appena quest’ultimo sarà disponibile.

code programmazione laravel

Immagine da wikipedia

 

Laravel mette a disposizione un intero meccanismo di gestione delle code, un meccanismo che solitamente viene utilizzato per la gestione di task ripetitivi che il server elabora in automatico e in modo asincrono rispetto all’azione di un utente.

Ad esempio quando un utente si registra, succedono alcune azioni:

1 – L’utente inserisce i propri dati in un’interfaccia web

2 – L’utente invia una richiesta HTTP al server, che verrà elaborata dall’applicazione Laravel

3 – L’applicazione valida i dati dell’utente e li salva nel database

4 – L’applicazione invia una mail di conferma all’utente

5 – L’applicazione invia una response al browser

Nota il punto 4: l’invio della mail è solitamente lento. Mentre inviamo la mail, l’utente sta aspettando impazientemente e pertanto… potrebbe lasciare il sito! Inoltre, cosa succede se il mail server ha un malfunzionamento? I dati dell’utente sarebbero nel database ma lui riceverebbe un messaggio di errore se non gestiamo l’errore, e comunque lui non riceverebbe la mail, magari contentente il link di attivazione.

Usare una coda ovvierebbe a questi problemi. Quindi, se decidiamo di usare una coda per la gestione dell’invio mail, il nuovo flow sarebbe una cosa del genere:

1 – L’utente inserisce i propri dati in un’interfaccia web

2 – L’utente invia una richiesta HTTP al server, che verrà elaborata dall’applicazione Laravel

3 – L’applicazione valida i dati dell’utente e li salva nel database

4 – L’applicazione mette in coda una mail di conferma all’utente

5 – L’applicazione invia una response al browser

In questo caso il punto 4 è un’operazione istantanea, perché il contenuto della mail viene temporaneamente salvato in una cache, che vedremo in dettaglio successivamente, per poi essere elaborato in un secondo momento.

Dai un’occhiata a tutti i Video Corsi LaraMind!

Ti chiederai comunque cosa succede se nel nostro esempio il mail server è comunque irraggiungibile e quando il task viene eseguito, questo fallisce. Il task, o job come viene definito nel gergo di Laravel, finisce una sorta di quello che viene definito Dead Letter Queue, cioè una coda di task falliti, che possono essere rieseguiti in un secondo momento.

Questo permette di non perdere mai i dati e di poter indagare su un possibile problema tecnico quando se ne ha la possibilità, semplicemente rieseguendo il task.

In conclusione

In questa prima parte abbiamo visto il principio di funzionamento delle code e per quale scopo vengono usate. In generale le code vengono utilizzate per la comunicazione asincrona tra due sistemi. Nel prossimo articolo vedremo come utilizzare le code con Laravel e tuti gli strumenti che il framework ci mette a disposizione.

Corsi Laravel, Vue.js, e davvero tanto altro ancora!