laravel

Laravel Scheduler Tutorial

Laravel Scheduler Tutorial
Nogle opgaver skal udføres regelmæssigt i enhver applikation, og det ville være mere effektivt, hvis opgaverne kunne udføres automatisk. Laravel-rammen gør disse typer opgaver lettere ved hjælp af Laravel Scheduler. Afsendelse af tilbudsrelaterede bulk-e-mails, optimering af data, generering af rapporter, bevarelse af sikkerhedskopiering af applikationer og fjernelse af inaktive brugere er nogle almindelige eksempler på de gentagne opgaver, der kan udføres med Laravel Scheduler. Laravel kan udføre bestemte opgaver med jævne mellemrum ved hjælp af en indbygget task manager, der hedder Majs job. Konfigurationsfilen navngivet Corntab bruges af Majs til at styre planlægningsopgaver. Denne vejledning viser dig, hvordan du administrerer gentagne opgaver ved at oprette Majs job og udføre opgaveplanlægning.

Forudsætninger

Før du starter denne tutorial, skal du først udføre følgende opgaver:

  1. Opret et nyt Laravel-projekt
  2. Opret databaseforbindelsen
  3. Kør kommandoen migrere, opret en brugertabel
  4. Konfigurer konfigurationen til afsendelse af e-mails (SMTP bruges her til afsendelse af e-mails.)

Implementere standardgodkendelse

Først skal du implementere Laravels standardbrugergodkendelsessystem for at fuldføre planlægningsopgaven vist i denne vejledning. Kør følgende kommandoer fra terminalen for at implementere standard Laravel-godkendelse ved hjælp af Vue.

$ komponist kræver laravel / ui
$ php håndværker ui vue -auth

Kør følgende kommando for at kompilere det nye stillads for at få det opdaterede indhold.

$ npm installation && npm run dev

Kør følgende kommando for at rydde rutecache.

$ php håndværkerrute: klar

Kør følgende kommando for at starte Laravel-udviklingsserveren og kontrollere, om standardbrugergodkendelsessystemet fungerer.

$ php håndværker serverer

Åbn en hvilken som helst browser, og kør følgende URL i browseren. Hvis den Log på og Tilmeld link vises og fungerer korrekt, så er implementeringen af ​​standardgodkendelse fuldført korrekt.

http: // localhost: 8000

Opret en mailbar klasse og håndværkskommando

Mange nye brugere opretter konti dagligt og udfører mange opgaver relateret til registrerede brugere, når projektet er online. Nogle gange skal applikationen vide, hvor mange brugere der har oprettet konti hver dag. Hvis disse oplysninger kræves regelmæssigt, er det bedre at udføre en bestemt forespørgsel efter et regelmæssigt interval. En Laravel-kommando bruges her til at få oplysningerne om de aktuelt registrerede brugere, og en mailbar klasse bruges til at sende disse oplysninger via e-mail til administratoren eller en specificeret person.

Kør følgende kommando for at oprette den mailbare klasse til afsendelse af e-mailen. Det opretter en fil med navnet SendUsersList.php på stedet app / Mail.

$ php håndværkerfabrik: mail SendUsersList

Åbn filen, og rediger indholdet som i følgende kode.

navneområde App \ Mail;
brug Illuminate \ Bus \ Queueable;
brug Illuminate \ Contracts \ Queue \ ShouldQueue;
brug Illuminate \ Mail \ Mailable;
brug Illuminate \ Queue \ SerializesModels;
klasse SendUsersList udvider Mailable

brug i kø, SerializesModels;
/ * Erklær en matrixvariabel * /
offentlig $ userList = array ();
/ **
* Opret en ny beskedforekomst.
*
* @ tilbagevenden ugyldig
* /
offentlig funktion __construct ($ userList)

/ * Initialiser arrayvariablen med den variabel, der sendes af
objekt oprettelse af klassen. * /
$ this-> userList = $ userList;

/ **
* Byg beskeden.
*
* @ Retur $ dette
* /
offentlig funktion build ()

/ * Diaplay visningsfilen med værdierne for arrayvariablen * /
returner $ this-> view ('registeredList') -> med ('userList', $ this-> userList);

Kør følgende kommando for at oprette den brugerdefinerede Laravel-kommando, der hedder Registrer brugerliste, som udfører forespørgslen for at få listen over registrerede brugeroplysninger i hver dag. Kommandoen opretter en fil med navnet Registrer brugerliste.php på stedet app / kommandoer.

$ php artisan make: kommando RegisterUsersList --command = registreret: brugere

Åbn filen og rediger indholdet med følgende kode for at sende listen over aktuelt registrerede brugere af det aktuelle system til en bestemt e-mail-adresse.

navneområde App \ Console \ Kommandoer;
brug Illuminate \ Console \ Command;
/ * Importer nødvendige pakker * /
brug Mail;
brug App \ Mail \ SendUsersList;
brug DB;
brug Carbon \ Carbon;
brug App \ Console \ Commands \ DateTime;
class RegisterUsersList udvider Command

/ **
* Navnet og signaturen på konsolkommandoen.
*
* @var streng
* /
/ * Tilføj signaturværdi * /
beskyttet $ signatur = 'registreret: brugere';
/ **
* Beskrivelse af kommandokommandoen.
*
* @var streng
* /
beskyttet $ beskrivelse = 'Liste over registrerede brugere';
/ **
* Opret en ny kommandoinstans.
*
* @ tilbagevenden ugyldig
* /
offentlig funktion __construct ()

forælder :: __ konstruere ();

/ **
* Udfør konsolkommandoen.
*
* @return int
* /
offentlig funktionshåndtag ()

/ * Læs den aktuelle systemdato * /
$ i dag = Carbon :: nu () -> toDateString ();
/ * Få listen over brugeroplysninger, der er registreret
i den aktuelle systemdato * /
$ current_registered_users =
DB :: tabel ('brugere') -> whereDate ('created_at', $ i dag) -> get () -> toArray ();
/ * Opret objektet for den mailbare klasse med arrayvariablen
der indeholder listen over aktuelt registrerede brugere * /
$ email = ny SendUsersList ($ current_registered_users);
/ * Send e-mail ved hjælp af Mail-klasse * /
Mail :: til ('modtagerens e-mail-adresse') -> send ($ email);

Opsæt tidsplanen til udførelse af kommandoen

Åbn Kerne.php fil fra placeringen app / konsol og rediger indholdet med følgende kode. Du kan indstille forskellige typer indstillinger for tidsplanfrekvens. Du kan få listen fra dette link. Her bruges timeplanen.

navneområde App \ Console;
brug Illuminate \ Console \ Scheduling \ Schedule;
brug Illuminate \ Foundation \ Console \ Kernel som ConsoleKernel;
klasse Kernel udvider ConsoleKernel

/ **
* De håndværkskommandoer, der leveres af din ansøgning.
*
* @var matrix
* /
/ * Intialiser variablen $ kommandoer * /
beskyttede $ kommandoer = [
'App \ Console \ Commands \ RegisterUsersList',
];
/ **
* Definer programmets kommandoplan.
*
* @param \ Illuminate \ Console \ Scheduling \ Schedule $ tidsplan
* @ tilbagevenden ugyldig
* /
beskyttet funktionsplan (Plan $ $ plan)

/ * Indstil tidsplanen hver time * /
$ skema-> kommando ('registreret: brugere') -> hver time ();

/ **
* Registrer kommandoerne til applikationen.
*
* @ tilbagevenden ugyldig
* /
beskyttede funktionskommandoer ()

$ dette-> belastning (__ DIR__.'/ Kommandoer');
kræve base_path ('ruter / konsol.php ');

Opret visning

Opret registreret liste.klinge.php se fil med følgende kode.


@if (count ($ userList)> 0)

Listen over brugere, der er registreret i dag, er angivet nedenfor:


@foreach ($ userList som $ user)
$ bruger-> navn

@endforeach
@andet
Ingen brugere er registreret i dag endnu.
@Afslut Hvis

Kør kommandoen:

Kør følgende kommandoer for at rydde cachen.

$ php håndværkercache: ryd
$ php håndværkskonfiguration: cache

Kør følgende håndværkskommando fra terminalen for at udføre den tidligere oprettede brugerdefinerede kommando og kontrollere output.

$ php håndværkerregistreret: brugere

Tjek modtagerens e-mail-adresse for at finde ud af output. Følgende output vises, hvis der ikke oprettes nogen bruger.

Opret en ny brugerkonto, og tjek e-mailen igen.

Konklusion

Laravel Scheduler gør gentagne opgaver lettere at udføre for applikationen. Efter at have læst denne vejledning skal læsere nu have en klar forståelse af begreberne oprettelse af brugerdefinerede kommandoer og implementering af automatiserede opgaver ved hjælp af Laravel Scheduler.

Top Oculus App Lab-spil
Hvis du er Oculus-headset-ejer, skal du være opmærksom på sideloading. Sideladning er processen med at installere ikke-butiksindhold på dit headset. S...
Top 10 spil at spille på Ubuntu
Windows-platform har været en af ​​de dominerende platforme til spil på grund af den enorme procentdel af spil, der udvikler sig i dag til indbygget a...
5 bedste arkadespil til Linux
I dag er computere seriøse maskiner, der bruges til spil. Hvis du ikke kan få den nye høje score, ved du hvad jeg mener. I dette indlæg vil du kende n...