Forudsætninger
Før du starter denne tutorial, skal du først udføre følgende opgaver:
- Installer et nyt Laravel-projekt
- Opret databaseforbindelsen
- Opsæt konfigurationen til afsendelse af e-mails (Du kan kontrollere e-mail-afsendelsesvejledningen for at sende e-mail ved hjælp af SMTP)
Opret tabel
Du skal oprette job tabel i databasen for at gemme alle køerne. Kør følgende kommando fra terminalen for at oprette migreringsfilen til job bord.
$ php håndværkerkø: tabelDu kan åbne migreringsfilen fra placeringen database / migreringer /. Filen indeholder følgende indhold.
brug Illuminate \ Database \ Migrations \ Migration;brug Illuminate \ Database \ Schema \ Blueprint;
brug Illuminate \ Support \ Facades \ Schema;
klasse CreateJobsTable udvider Migration
/ **
* Kør migreringerne.
*
* @ tilbagevenden ugyldig
* /
offentlig funktion op ()
Skema :: Opret ('job', funktion (Blueprint $ tabel)
$ table-> bigIncrements ('id');
$ tabel-> streng ('kø') -> indeks ();
$ tabel-> longText ('nyttelast');
$ table-> unsignedTinyInteger ('forsøg');
$ table-> unsignedInteger ('reserved_at') -> nullable ();
$ table-> unsignedInteger ('available_at');
$ table-> unsignedInteger ('created_at');
);
/ **
* Vend migreringerne.
*
* @ tilbagevenden ugyldig
* /
offentlig funktion ned ()
Skema :: dropIfExists ('job');
Kør følgende kommando fra terminalen for at oprette job bord.
$ php håndværker migrererOpret e-mail-klasse
Du skal oprette en klasse, der kan sendes, for at sende e-mails fra Laravel-applikationen. Kør følgende kommando for at oprette den mailklasse, der hedder Send e-mail på stedet app / Mail.
$ php håndværkerfabrik: mail SendEmailIndholdet af denne klasse er vist nedenfor. Visningsfilnavnet, der bruges i bygge () metode oprettes i den næste del af denne vejledning.
navneområde App \ Mail;brug Illuminate \ Bus \ Queueable;
brug Illuminate \ Contracts \ Queue \ ShouldQueue;
brug Illuminate \ Mail \ Mailable;
brug Illuminate \ Queue \ SerializesModels;
klasse SendEmail udvider Mailable
brug i kø, SerializesModels;
/ **
* Opret en ny beskedforekomst.
*
* @ tilbagevenden ugyldig
* /
offentlig funktion __construct ()
//
/ **
* Byg beskeden.
*
* @ Retur $ dette
* /
offentlig funktion build ()
/ * Definer det visningsnavn, der skal bruges til e-mail-skabelon * /
returner $ dette-> visning ('email');
Opret visning
Opret den viste fil, der hedder e-mail.klinge.php med følgende indhold, der sendes som e-mail-organ.
Velkommen til Linux Hint
Lær Laravel let
Opret en jobklasse
Kør følgende kommando for at oprette en jobklasse. Jobklassens filnavn med navnet AfsenderE-mail.php oprettes på stedet app / job.
$ php håndværkerfabrik: jobafsendelseE-mailIndholdet af AfsenderE-mail.php er vist nedenfor. Du skal angive en gyldig e-mail-adresse inde i til() metode til håndtere() funktion til at teste, om koden fungerer korrekt. Indstil den gyldige e-mail-adresse i stedet for 'Modtagerens e-mail-adresse' inde i til() metode til at kontrollere, om køen fungerer korrekt.
navneområde App \ Jobs;brug Illuminate \ Bus \ Queueable;
brug Illuminate \ Contracts \ Queue \ ShouldQueue;
brug Illuminate \ Foundation \ Bus \ Dispatchable;
brug Illuminate \ Queue \ InteractsWithQueue;
brug Illuminate \ Queue \ SerializesModels;
/ * Tilføjede de nødvendige pakker * /
brug Mail;
brug App \ Mail \ SendEmail;
klasse SendingEmail implementerer ShouldQueue
brug Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/ **
* Opret en ny jobforekomst.
*
* @ tilbagevenden ugyldig
* /
offentlig funktion __construct ()
//
/ **
* Udfør jobbet.
*
* @ tilbagevenden ugyldig
* /
offentlig funktionshåndtag ()
/ * Opret objektet for en mailbar klasse og send e-mail * /
$ email = ny SendEmail ();
/ * Indstil en gyldig e-mail-adresse * /
Mail :: til ('Modtagerens e-mail-adresse') -> send ($ email);
Opret controller
Kør følgende kommando for at oprette en controller til at håndtere køen. Når handleQueue () funktion af controlleren udføres, køjobbet skubbes, og e-mailen sendes.
$ php håndværkerfabrik: controller SendEmailControllerSendEmailController.php
navneområde App \ Http \ Controllers;brug Illuminate \ Http \ Request;
/ * Tilføj de nødvendige pakker * /
brug App \ Jobs \ SendingEmail;
brug Carbon \ Carbon;
klasse SendEmailController udvider Controller
/ **
* Brug af Laravel-køer
* /
public function handleQueue ()
/ * Skub det nye job i jobkøen * /
forsendelse (ny SendingEmail ());
/ * Udskriv besked efter afsendelse af e-mail * /
ekko 'E-mail er sendt';
Tilføj rute
Åbn web.php fil fra ruter mappen og tilføj følgende rute for at udføre køjobbet ved hjælp af controlleren.
Rute :: get ('email', '[email protected]');Kør følgende URL i browseren for at kontrollere, om koden fungerer. Åbn modtagerens e-mail-adresse for at kontrollere, om en ny e-mail er modtaget.
http: // localhost: 8000 / emailqueue
Tilføj forsinkelse
Åbn AfsenderE-mail.php fil igen og rediger indholdet af handleQueue () funktion for at tilføje fem sekunders forsinkelse til køjobs.
navneområde App \ Http \ Controllers;brug Illuminate \ Http \ Request;
/ * Tilføj de nødvendige pakker * /
brug App \ Jobs \ SendingEmail;
brug Carbon \ Carbon;
klasse SendEmailController udvider Controller
/ **
* Brug af Laravel-køer
* /
public function handleQueue ()
/ * Opret et nyt køobjekt med 5 sekunders forsinkelse * /
$ emailJob = (ny SendingEmail ()) -> forsinkelse (Carbon :: nu () -> addSeconds (5));
/ * Skub det nye job i jobkøen * /
forsendelse ($ emailJob);
/ * Udskriv besked efter afsendelse af e-mail * /
ekko 'E-mail sendt efter fem sekunder';
Igen skal du køre følgende URL i browseren for at kontrollere, om koden fungerer. Her sendes e-mailen efter fem sekunder ved hjælp af forsinkelsesmetoden () på fem sekunder.
http: // localhost: 8000 / emailqueue
Kontroller indbakken til modtagerens e-mail-adresse for at finde ud af, om en ny e-mail er modtaget efter 5 sekunder. En e-mail med følgende indhold modtages, hvis køjobbet fungerer korrekt.
Konklusion
Denne vejledning viser meget enkel brug af Laravel-køen. Du kan bruge Laravel-køer til forskellige formål baseret på dine applikationskrav. Jeg håber, at denne vejledning har hjulpet læsere til bedre at forstå de grundlæggende begreber i Laravel-køer.