laravel

Laravel kø-vejledning

Laravel kø-vejledning
Laravel-køen er en af ​​de mere nyttige funktioner i Laravel-rammen. Denne funktion bruges til at vente på tidskrævende opgaver og udføre opgaver på et senere tidspunkt for at forbedre ydeevnen og effektiviteten af ​​Laravel-applikationen. Denne funktion giver forskellige typer køer i bagenden, såsom Amazon SQS, Redis, Beanstalk, synkron driver eller relationsdatabase. En nul kødriver bruges til at kassere job i kø. Køens konfigurationsfil er gemt på placeringen konfiguration / kø.php. Et almindeligt eksempel på brug af Laravel-køen er at sende e-mails. Når det er nødvendigt at håndtere et stort antal e-mails i Laraval-applikationen, er det bedre at bruge Laravel-køer til at fremskynde behandlingen. Denne vejledning viser, hvordan du bruger Laravel-køer til at sende et stort antal e-mails.

Forudsætninger

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

  1. Installer et nyt Laravel-projekt
  2. Opret databaseforbindelsen
  3. 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ø: tabel

Du 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 migrerer

Opret 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 SendEmail

Indholdet 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-mail

Indholdet 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 SendEmailController

SendEmailController.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.

Mus Sådan vender du musens og touchpadsens rulle retning i Windows 10
Sådan vender du musens og touchpadsens rulle retning i Windows 10
Mus og Touchpads gør ikke kun computing let, men mere effektiv og mindre tidskrævende. Vi kan ikke forestille os et liv uden disse enheder, men det er...
Mus Sådan ændres musemarkør og markørstørrelse, farve og skema på Windows 10
Sådan ændres musemarkør og markørstørrelse, farve og skema på Windows 10
Musemarkøren og markøren i Windows 10 er meget vigtige aspekter af operativsystemet. Dette kan også siges om andre operativsystemer, så i sandhed er d...
Gratis og open source-spilmotorer til udvikling af Linux-spil
Denne artikel dækker en liste over gratis og open source-spilmotorer, der kan bruges til at udvikle 2D- og 3D-spil på Linux. Der er mange sådanne spil...