laravel

Laravel Queues Tutorial

Laravel Queues Tutorial
Laravel-kön är en av de mer användbara funktionerna i Laravel-ramverket. Denna funktion används för att vänta på tidskrävande uppgifter och utföra uppgifter vid ett senare tillfälle för att förbättra prestanda och effektivitet i Laravel-applikationen. Den här funktionen ger olika typer av köer i back-end, till exempel Amazon SQS, Redis, Beanstalk, synkron drivrutin eller relationsdatabas. En nollkö-drivrutin används för att kassera jobb i kö. Köns konfigurationsfil lagras på platsen konfiguration / kö.php. Ett vanligt exempel på att använda Laravel-kön är att skicka e-post. När det krävs att hantera ett stort antal e-postmeddelanden i Laraval-applikationen är det bättre att använda Laravel-köerna för att påskynda behandlingen. Denna handledning visar hur du använder Laravel-köer för att skicka ett stort antal e-postmeddelanden.

Förutsättningar

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

  1. Installera ett nytt Laravel-projekt
  2. Ställ in databasanslutningen
  3. Ställ in konfigurationen för att skicka e-postmeddelanden (Du kan kontrollera e-posthandboken för att skicka e-post med SMTP)

Skapa bord

Du måste skapa jobb tabellen i databasen för att lagra alla köer. Kör följande kommando från terminalen för att skapa migreringsfilen för jobb tabell.

$ php hantverkarkö: tabell

Du kan öppna migreringsfilen från platsen databas / migreringar /. Filen innehåller följande innehåll.

använd Illuminate \ Database \ Migrations \ Migration;
använd Illuminate \ Database \ Schema \ Blueprint;
använd Illuminate \ Support \ Facades \ Schema;
klass CreateJobsTable utökar migrering

/ **
* Kör migreringarna.
*
* @return ogiltig
* /
offentlig funktion upp ()

Schema :: skapa ('jobb', funktion (Blueprint $ tabell)
$ table-> bigIncrements ('id');
$ table-> string ('queue') -> index ();
$ table-> longText ('nyttolast');
$ table-> unsignedTinyInteger ('försök');
$ table-> unsignedInteger ('reserved_at') -> nullable ();
$ table-> unsignedInteger ('available_at');
$ table-> unsignedInteger ('created_at');
);

/ **
* Omvänd migreringarna.
*
* @return ogiltig
* /
offentlig funktion ner ()

Schema :: dropIfExists ('jobb');

Kör följande kommando från terminalen för att skapa jobb tabell.

$ php hantverkare migrerar

Skapa e-postklass

Du måste skapa en e-postklass för att skicka e-post från Laravel-applikationen. Kör följande kommando för att skapa den e-postklass som heter Skicka epost på platsen app / Mail.

$ php artisan make: mail SendEmail

Innehållet i denna klass visas nedan. Visningsfilnamnet som används i bygga() metod kommer att skapas i nästa del av denna handledning.

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 SendEmail utökar Mailable

använd Queueable, SerializesModels;
/ **
* Skapa en ny meddelandeinstans.
*
* @return ogiltig
* /
offentlig funktion __construct ()

//

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

/ * Definiera det visningsnamn som ska användas för e-postmall * /
returnera $ this-> view ('email');

Skapa vy

Skapa den visade filen med namnet e-post.blad.php med följande innehåll som skickas som e-postadress.

Välkommen till Linux Hint


Lär dig Laravel enkelt

Skapa en jobbklass

Kör följande kommando för att skapa en jobbklass. Namnet på jobbklassens filnamn Skickar e-post.php kommer att skapas på platsen app / jobb.

$ php hantverkare: jobbsändningE-post

Innehållet i Skickar e-post.php visas nedan. Du måste ange en giltig e-postadress inuti till() metod för hantera() funktion för att testa om koden fungerar korrekt. Ställ in den giltiga e-postadressen i stället för "Mottagarens e-postadress" inuti till() metod för att kontrollera om kön fungerar som den ska.

namnrymd App \ Jobb;
använd Illuminate \ Bus \ Queueable;
använd Illuminate \ Contracts \ Queue \ ShouldQueue;
använd Illuminate \ Foundation \ Bus \ Dispatchable;
använd Illuminate \ Queue \ InteractsWithQueue;
använd Illuminate \ Queue \ SerializesModels;
/ * Lade till nödvändiga paket * /
använd Mail;
använd App \ Mail \ SendEmail;
klass SendingEmail implementerar ShouldQueue

använd Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/ **
* Skapa en ny jobbinstans.
*
* @return ogiltig
* /
offentlig funktion __construct ()

//

/ **
* Utför jobbet.
*
* @return ogiltig
* /
offentligt funktionshandtag ()

/ * Skapa objektet till postklassen och skicka e-post * /
$ email = ny SendEmail ();
/ * Ange en giltig e-postadress * /
Mail :: till ('E-postadress för mottagare') -> skicka ($ email);

Skapa kontroller

Kör följande kommando för att skapa en styrenhet för att hantera kön. När handleQueue () om kontrollerns funktion körs, kommer köjobbet att tryckas och e-postmeddelandet skickas.

$ php hantverkare: controller SendEmailController

SendEmailController.php

namnrymd App \ Http \ Controllers;
använd Illuminate \ Http \ Request;
/ * Lägg till nödvändiga paket * /
använd App \ Jobs \ SendingEmail;
använd kol \ kol;
klass SendEmailController utökar Controller

/ **
* Använda Laravel-köer
* /
public function handleQueue ()

/ * Skjut det nya jobbet i jobbkön * /
leverans (ny SendingEmail ());
/ * Skriv ut meddelande efter att ha skickat e-post * /
eko 'E-post har skickats';

Lägg till rutt

Öppna webb.php fil från rutter mappen och lägg till följande rutt för att utföra köjobbet med hjälp av styrenheten.

Rutt :: get ('email', '[email protected]');

Kör följande URL i webbläsaren för att kontrollera om koden fungerar. Öppna mottagarens e-postadress för att kontrollera om ett nytt e-postmeddelande har mottagits.

http: // localhost: 8000 / emailqueue

Lägg till fördröjning

Öppna Skickar e-post.php fil igen och ändra innehållet i handleQueue () funktion för att lägga till fem sekunders fördröjning i köjobben.

namnrymd App \ Http \ Controllers;
använd Illuminate \ Http \ Request;
/ * Lägg till nödvändiga paket * /
använd App \ Jobs \ SendingEmail;
använd kol \ kol;
klass SendEmailController utökar Controller

/ **
* Använda Laravel-köer
* /
public function handleQueue ()

/ * Skapa ett nytt köobjekt med 5 sekunders fördröjning * /
$ emailJob = (ny SendingEmail ()) -> fördröjning (Carbon :: nu () -> addSeconds (5));
/ * Skjut det nya jobbet i jobbkön * /
leverans ($ emailJob);
/ * Skriv ut meddelande efter att ha skickat e-post * /
eko 'E-post skickat efter fem sekunder';

Kör igen följande URL i webbläsaren för att kontrollera om koden fungerar. Här skickas e-postmeddelandet efter fem sekunder med fördröjningsmetoden () på fem sekunder.

http: // localhost: 8000 / emailqueue

Kontrollera inkorgen för mottagarens e-postadress för att ta reda på om ett nytt e-postmeddelande har mottagits efter 5 sekunder. Ett e-postmeddelande med följande innehåll kommer att tas emot om köjobbet fungerar korrekt.

Slutsats

Denna handledning visar mycket enkel användning av Laravel-kön. Du kan använda Laravel-köer för olika ändamål, baserat på dina applikationskrav. Jag hoppas att den här guiden har hjälpt läsarna att bättre förstå de grundläggande begreppen för Laravel-köer.

Användbara verktyg för Linux-spelare
Om du gillar att spela spel på Linux är chansen att du kan ha använt appar och verktyg som Wine, Lutris och OBS Studio för att förbättra spelupplevels...
HD Remastered Games för Linux som aldrig tidigare hade en Linux-version
Många spelutvecklare och utgivare kommer med HD-remaster av gamla spel för att förlänga livstiden för franchisen, snälla fans som begär kompatibilitet...
Hur man använder AutoKey för att automatisera Linux-spel
AutoKey är ett verktyg för desktopautomatisering för Linux och X11, programmerat i Python 3, GTK och Qt. Med hjälp av dess skript och MACRO-funktional...