Förutsättningar
Innan du börjar den här självstudien, ska du först slutföra följande uppgifter:
- Installera ett nytt Laravel-projekt
- Ställ in databasanslutningen
- 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ö: tabellDu 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 migrerarSkapa 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 SendEmailInnehå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-postInnehå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 SendEmailControllerSendEmailController.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.