laravel

Laravel Scheduler Tutorial

Laravel Scheduler Tutorial
Vissa uppgifter krävs för att utföra regelbundet i alla applikationer, och det skulle vara effektivare om uppgifterna kunde göras automatiskt. Laravel-ramverket underlättar dessa typer av uppgifter genom att använda Laravel Scheduler. Skicka erbjudande-relaterade bulk-e-postmeddelanden, optimera data, generera rapporter, behålla säkerhetskopiering av applikationer och ta bort inaktiva användare är några vanliga exempel på repetitiva uppgifter som kan utföras med Laravel Scheduler. Laravel kan utföra specifika uppgifter periodiskt med hjälp av en inbyggd uppgiftshanterare som heter Majs jobb. Konfigurationsfilen med namnet Corntab används av Majs för att hantera schemaläggningsuppgifter. Denna handledning visar hur du hanterar repetitiva uppgifter genom att skapa Majs jobb och utför schemaläggning av uppgifter.

Förutsättningar

Innan du börjar den här självstudien, ska du först slutföra följande uppgifter:

  1. Skapa ett nytt Laravel-projekt
  2. Ställ in databasanslutningen
  3. Kör migrera kommandot skapa en användartabell
  4. Ställ in konfigurationen för att skicka e-post (SMTP används här för att skicka e-post.)

Implementera standardautentisering

Implementera först Laravels standardanvändarautentiseringssystem för att slutföra schemaläggningsuppgiften som visas i denna handledning. Kör följande kommandon från terminalen för att implementera standard Laravel-autentisering med Vue.

$ kompositör kräver laravel / ui
$ php artisan ui vue -auth

Kör följande kommando för att kompilera den nya byggnadsställningen för att få det uppdaterade innehållet.

$ npm install && npm run dev

Kör följande kommando för att rensa ruttcachen.

$ php hantverksväg: tydlig

Kör följande kommando för att starta Laravel-utvecklingsservern och kontrollera om standardanvändarautentiseringssystemet fungerar.

$ php hantverkare serverar

Öppna valfri webbläsare och kör följande URL i webbläsaren. Om den logga in och Registrera länken visas och fungerar korrekt, sedan har implementeringen av standardautentiseringen slutförts ordentligt.

http: // localhost: 8000

Skapa en mailbar klass och ett hantverkarkommando

Många nya användare kommer att skapa konton dagligen och kommer att utföra många uppgifter relaterade till registrerade användare när projektet är online. Ibland måste applikationen veta hur många användare som har skapat konton varje dag. Om denna information krävs regelbundet är det bättre att utföra en viss fråga efter ett regelbundet intervall. Ett Laravel-kommando används här för att få information om de för närvarande registrerade användarna och en e-postklass används för att skicka informationen via e-post till administratören eller en angiven person.

Kör följande kommando för att skapa den mailbara klassen för att skicka e-postmeddelandet. Det skapar en fil med namnet SendUsersList.php på platsen app / Mail.

$ php artisan make: mail SendUsersList

Öppna filen och ändra innehållet, som i följande kod.

namnrymd App \ Mail;
använd Illuminate \ Bus \ Queueable;
använd Illuminate \ Contracts \ Queue \ ShouldQueue;
använd Illuminate \ Mail \ Mailable;
använd Illuminate \ Queue \ SerializesModels;
klass SendUsersList utökar Mailable

använd Queueable, SerializesModels;
/ * Deklarera en arrayvariabel * /
public $ userList = array ();
/ **
* Skapa en ny meddelandeinstans.
*
* @return ogiltig
* /
offentlig funktion __construct ($ userList)

/ * Initiera matrisvariabeln med variabeln som passeras av
objekt skapande av klassen. * /
$ this-> userList = $ userList;

/ **
* Skapa meddelandet.
*
* @ returnera $ detta
* /
public function build ()

/ * Spela upp visningsfilen med värdena för arrayvariabeln * /
returnera $ this-> view ('registeredList') -> med ('userList', $ this-> userList);

Kör följande kommando för att skapa det anpassade Laravel-kommandot som heter RegisterUsersList, som kommer att utföra frågan för att få listan med information om registrerade användare varje dag. Kommandot skapar en fil med namnet RegisterUsersList.php på platsen app / kommandon.

$ php artisan make: kommando RegisterUsersList - command = registrerad: användare

Öppna filen och ändra innehållet med följande kod för att skicka listan över för närvarande registrerade användare av det aktuella systemet till en viss e-postadress.

namnrymd App \ Console \ Kommandon;
använd Illuminate \ Console \ Command;
/ * Importera nödvändiga paket * /
använd Mail;
använd App \ Mail \ SendUsersList;
använd DB;
använd kol \ kol;
använd App \ Console \ Commands \ DateTime;
class RegisterUsersList utökar kommandot

/ **
* Namnet och signaturen för konsolkommandot.
*
* @var sträng
* /
/ * Lägg till signaturvärde * /
skyddad $ signatur = 'registrerad: användare';
/ **
* Beskrivning av konsolkommandot.
*
* @var sträng
* /
skyddad $ beskrivning = 'Lista över registrerade användare';
/ **
* Skapa en ny kommandoinstans.
*
* @return ogiltig
* /
offentlig funktion __construct ()

förälder :: __ konstruera ();

/ **
* Utför konsolkommandot.
*
* @return int
* /
offentligt funktionshandtag ()

/ * Läs aktuellt systemdatum * /
$ idag = Kol :: nu () -> toDateString ();
/ * Få en lista över användarinformation som är registrerade
i nuvarande systemdatum * /
$ current_registered_users =
DB :: tabell ('användare') -> whereDate ('created_at', $ idag) -> get () -> toArray ();
/ * Skapa objektet för den mailbara klassen med arrayvariabeln
som innehåller listan över registrerade användare * /
$ email = ny SendUsersList ($ current_registered_users);
/ * Skicka e-post med e-postklassen * /
Mail :: till ('mottagarens e-postadress') -> skicka ($ email);

Ställ in schemat för att utföra kommandot

Öppna Kärna.php fil från platsen app / konsol och ändra innehållet med följande kod. Du kan ställa in olika typer av schemaläggningsfrekvensalternativ. Du kan hämta listan från den här länken. Här används timschemat.

namnrymd App \ Console;
använd Illuminate \ Console \ Scheduling \ Schema;
använd Illuminate \ Foundation \ Console \ Kernel som ConsoleKernel;
klass Kernel utökar ConsoleKernel

/ **
* Artisan-kommandona som tillhandahålls av din ansökan.
*
* @var array
* /
/ * Intialisera variabeln $ kommandon * /
skyddade $ kommandon = [
'App \ Console \ Commands \ RegisterUsersList',
];
/ **
* Definiera programmets kommandoschema.
*
* @param \ Illuminate \ Console \ Scheduling \ Schema $ schema
* @return ogiltig
* /
skyddat funktionsschema (Schema $ schema)

/ * Ställ in schemat varje timme * /
$ schema-> kommando ('registrerad: användare') -> timme ();

/ **
* Registrera kommandona för applikationen.
*
* @return ogiltig
* /
skyddade funktionskommandon ()

$ this-> load (__ DIR__.'/ Kommandon');
kräver base_path ('rutter / konsol.php ');

Skapa vy

Skapa registrerad lista.blad.php visa fil med följande kod.


@if (antal ($ userList)> 0)

Listan över användare som är registrerade idag ges nedan:


@foreach ($ userList som $ user)
$ user-> name

@endforeach
@annan
Ingen användare är registrerad idag än.
@endif

Kör kommandot:

Kör följande kommandon för att rensa cacheminnet.

$ php hantverkscache: rensa
$ php artisan config: cache

Kör följande hantverkarkommando från terminalen för att utföra det tidigare skapade anpassade kommandot och kontrollera utdata.

$ php hantverkare registrerad: användare

Kontrollera mottagarens e-postadress för att ta reda på resultatet. Följande utdata visas om ingen användare skapas.

Skapa ett nytt användarkonto och kontrollera e-postmeddelandet igen.

Slutsats

Laravel Scheduler gör upprepade uppgifter lättare att utföra för applikationen. Efter att ha läst denna handledning bör läsarna nu ha en klar förståelse för begreppen att skapa anpassade kommandon och implementera automatiserade uppgifter med Laravel Scheduler.

Hur man utvecklar ett spel på Linux
För ett decennium sedan skulle inte många Linux-användare förutsäga att deras favoritoperativsystem en dag skulle vara en populär spelplattform för ko...
Portar med öppen källkod för kommersiella spelmotorer
Gratis, öppen källkod och plattformsmekaniska rekreationer kan användas för att spela gamla såväl som några av de ganska senaste speltitlarna. I den h...
Bästa kommandoradsspel för Linux
Kommandoraden är inte bara din största allierade när du använder Linux, det kan också vara källan till underhållning eftersom du kan använda den för a...