Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Laravel 5
Code

Pianificazione attività in Laravel

by
Difficulty:BeginnerLength:MediumLanguages:

Italian (Italiano) translation by Francesco (you can also view the original English article)

In questo articolo, andremo a vedere una delle caratteristiche più interessanti del framework web Laravel — la programmazione delle attività. Nel corso di questo articolo, vedremo come Laravel consente di gestire le operazioni pianificate in un'applicazione. Inoltre, vedremo anche la creazione di proprie operazioni pianificate personalizzate per scopi dimostrativi.

Il framework Laravel consente di impostare le operazioni pianificate in modo che non devi preoccuparti della loro istituzione a livello di sistema. Si può sbarazzarsi di quella sintassi complessa cron mentre si impostano le attività pianificate poichè Laravel permette di definirli in modo user-friendly.

Inizieremo l'articolo con il modo in cui siete abituati a impostare tradizionalmente i processi di cron e in seguito esploreremo il modo di Laravel per realizzare la stessa cosa. Nella seconda metà dell'articolo, darò un esempio creando un paio di attività pianificate che dovrebbero fornire la comprensione totale del topic dell'articolo.

Impostazione tradizionale di operazione pianificata

Nel vostro sviluppo di applicazione quotidiana, si deve spesso affrontare una situazione in cui è necessario eseguire alcuni script o comandi periodicamente. Se stai lavorando con il sistema *nix, sei probabilmente consapevole che con cron job puoi gestire questi comandi. D'altra parte, sono conosciuti anche come attività pianificate su sistemi basati su Windows.

Diamo un rapido sguardo a un semplice esempio dei cron basati su *nix.

Abbastanza semplice — viene eseguito il file di statistics.sh ogni cinque minuti!

Anche se era un caso di utilizzo piuttosto semplice, vi trovate spesso in una situazione che richiede di implementare casi di utilizzo più complessi. D'altra parte, un sistema complesso richiede di definire più processi di cron eseguiti a intervalli di tempo diversi.

Vediamo alcune attività che una complessa applicazione web deve eseguire periodicamente nel back-end.

  • Pulire i dati non necessari dal database back-end.
  • Aggiornare gli indici di memorizzazione nella cache front-end per tenerlo aggiornato.
  • Calcolare le statistiche del sito.
  • Inviare messaggi di posta elettronica.
  • Eseguire il backup di elementi del sito.
  • Generare rapporti.
  • E altro ancora.

Quindi, come potete vedere, c'è un sacco di roba là fuori in attesa di essere eseguita periodicamente e anche a intervalli di tempo diversi. Se sei un amministratore di sistema esperto, è semplice per te poter definire il cron jobs per tutte queste attività, ma a volte noi come sviluppatori desideriamo che ci fosse un modo più semplice per farlo.

Per fortuna, Laravel viene fornito con un API built-in per il Task Scheduling che consente di definire operazioni pianificate come mai prima. E sì, la prossima sezione è interamente su questo — le basi della programmazione delle attività di Laravel.

Il modo di Laravel

Nella sezione precedente, abbiamo analizzato il tradizionale modo di impostare cron jobs. In questa sezione vedremo le specifiche di Laravel nell'ambito dell'attività di programmazione API.

Prima di andare avanti, la cosa importante da capire è che la funzionalità di programmazione fornita da Laravel è proprio come qualsiasi altra caratteristica e non viene richiamata automaticamente. Quindi se stai pensando che non devi fare nulla a livello di sistema, allora sei fuori strada, direi.

Infatti, la prima cosa che si dovrebbe fare se si desidera utilizzare il sistema di programmazione è quello di impostare il cron job che viene eseguito ogni minuto e chiama il comando artisan illustrato nel seguente snippet di Laravel.

Il comando precedente di artisan chiama l'utilità di pianificazione di Laravel, che a sua volta esegue tutti i cron job in sospeso definiti nell'applicazione.

Naturalmente, dobbiamo ancora vedere come definire le operazioni pianificate in un'applicazione di Laravel, che è la prossima cosa che approfondiremo.

È il metodo schedule della classe App\Console\Kernel che è necessario utilizzare se si desidera definire operazioni pianificate specifiche dell'applicazione.

Andiamo avanti e prendiamo il contenuto del file app/Console/Kernel.php.

Come potete vedere, il codice di base ci fornisce un esempio utile. Nell'esempio precedente, Laravel esegue il comando di artisan inspire ogni ora. Non credi che la sintassi è molto intuitiva in primo luogo?

In realtà, ci sono un paio di modi diversi in cui Laravel consente di definire le attività di pianificazione:

  • Utilizzare la closure/callable.
  • Chiamare il comando di artisan.
  • Eseguire il comando di shell.

Inoltre, ci sono un sacco di frequenze di pianificazione built-in che si possono scegliere:

  • ogni minuto/ogni cinque minuti
  • orario/giornaliero/settimanale/trimestrale/annuale
  • a un'ora specifica del giorno
  • e molti altri

In realtà, direi che fornisce un set completo di routine di modo che non dovete mai toccare la shell per creare il vostro cron job personalizzato!

Sì posso dire che siete ansiosi di sapere come implementare le operazioni pianificate, e che è quello che ho anche promesso all'inizio dell'articolo.

Creare il vostro primo task programmato in Laravel

Come abbiamo detto, ci sono diversi modi in cui Laravel consente di definire le operazioni pianificate. Andiamo a vederle per capire come funzionano.

Il metodo di Closure/Callable

L'API di programmazione fornisce il metodo di call che consente di eseguire un callable o una funzione di closure. Andiamo a rivedere il file di app/Console/Kernel.php con il codice riportato di seguito.

Come potete vedere, abbiamo passato la funzione di closure come primo argomento del metodo call. Inoltre, abbiamo creato la frequenza di ogni 30 minuti, quindi potrà eseguire la funzione di closure ogni 30 minuti!

Nel nostro esempio, contiamo i totale messaggi per utente e aggiorniamo di conseguenza la tabella delle statistiche.

Il comando di Artisan

A parte le chiusure o callables, è anche possibile pianificare un comando di artisan che verrà eseguito a determinati intervalli. Infatti, questo dovrebbe essere l'approccio preferito piuttosto delle closures per la migliore organizzazione del codice e riusabilità che fornisce allo stesso tempo.

Andiamo avanti e rivediamo il contenuto del file app/Console/Kernel.php con il seguente.

È il metodo command che si deve utilizzare se si desidera pianificare un comando di artisan come illustrato nel frammento di codice precedente. È necessario passare la firma del comando artisan come primo argomento del metodo di command.

Naturalmente, è necessario definire il corrispondente comando artisan pure a app/Console/Commands/UserStatistics.php.

Il comando Exec

Potremmo dire che i metodi che abbiamo discusso finora erano specifici per l'applicazione di Laravel stessa. Inoltre, Laravel consente anche di pianificare i comandi di shell in modo che è possibile eseguire applicazioni esterne.

Andiamo a vedere un rapido esempio che illustra come eseguire un backup del database ogni giorno.

È evidente dal codice che è necessario utilizzare il metodo exec dell'utilità di pianificazione, e bisogna passare il comando che si desidera eseguire come primo argomento.

A parte questo, abbiamo anche usato il metodo di sendOutputTo che consente di raccogliere l'output del comando. D'altra parte, c'è un metodo, emailOutputTo, che consente d inviare peri e-mail il contenuto di uscita!

E questo ci porta alla fine dell'articolo. Infatti, abbiamo appena scalfito la superficie dell'API di scheduling di Laravel, e c'è molto altro.

Conclusione

Oggi, abbiamo analizzato l'API di pianificazione attività del framework web Laravel. È stato affascinante vedere come facilmente possiamo gestire le attività che devono essere eseguite periodicamente.

All'inizio dell'articolo, abbiamo discusso il modo tradizionale di impostare operazioni pianificate e dopo abbiamo introdotto il modo di farlo con Laravel. Nella seconda metà dell'articolo, abbiamo visto un paio di esempi pratici per illustrare i concetti di pianificazione delle attività.

Spero che vi sia piaciuta l'articolo, e ora vi dovreste sentire più sicuri sull'impostazione di operazioni pianificate in Laravel. Per quelli di voi che hanno da poco iniziato con Laravel o stanno cercando di migliorarne la conoscenza, sito o applicazione con estensioni, abbiamo una varietà di cose che si possono studiare nel market di Envato.

Se vi venisse qualcosa in mente, iniziamo una conversazione utilizzando il feed qui sotto!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.