laravel

Laravel køopplæring

Laravel køopplæring
Laravel-køen er en av de mer nyttige funksjonene i Laravel-rammeverket. Denne funksjonen brukes til å vente på tidkrevende oppgaver og utføre oppgaver på et senere tidspunkt for å forbedre ytelsen og effektiviteten til Laravel-applikasjonen. Denne funksjonen gir forskjellige typer køer i bakenden, for eksempel Amazon SQS, Redis, Beanstalk, synkron driver eller relasjonsdatabase. En null kødriver brukes til å forkaste jobber i kø. Konfigurasjonsfilen til køen lagres på stedet config / kø.php. Et vanlig eksempel på bruk av Laravel-køen er å sende e-post. Når det kreves å håndtere et stort antall e-poster i Laraval-applikasjonen, er det bedre å bruke Laravel-køer for å øke hastigheten på behandlingen. Denne veiledningen viser hvordan du bruker Laravel-køer til å sende et stort antall e-poster.

Forutsetninger

Før du begynner på denne opplæringen, må du fullføre følgende oppgaver:

  1. Installer et nytt Laravel-prosjekt
  2. Sett opp databasetilkoblingen
  3. Sett opp konfigurasjonen for sending av e-post (Du kan sjekke veiledningen for sending av e-post for å sende e-post ved hjelp av SMTP)

Lag tabell

Du må opprette arbeidsplasser tabellen i databasen for å lagre alle køene. Kjør følgende kommando fra terminalen for å opprette migreringsfilen for arbeidsplasser bord.

$ php håndverkskø: tabell

Du kan åpne migreringsfilen fra stedet database / migrasjoner /. Filen inneholder følgende innhold.

bruk Illuminate \ Database \ Migrations \ Migration;
bruk Illuminate \ Database \ Schema \ Blueprint;
bruk Illuminate \ Support \ Facades \ Schema;
klasse CreateJobsTable utvider Migration

/ **
* Kjør migrasjonene.
*
* @ retur ugyldig
* /
offentlig funksjon opp ()

Schema :: create ('jobs', function (Blueprint $ table)
$ table-> bigIncrements ('id');
$ tabell-> streng ('kø') -> indeks ();
$ table-> longText ('nyttelast');
$ table-> unsignedTinyInteger ('forsøk');
$ table-> unsignedInteger ('reserved_at') -> nullable ();
$ table-> unsignedInteger ('available_at');
$ table-> unsignedInteger ('created_at');
);

/ **
* Gjør om migrasjonene.
*
* @ retur ugyldig
* /
offentlig funksjon ned ()

Skjema :: dropIfExists ('jobber');

Kjør følgende kommando fra terminalen for å opprette jobb bord.

$ php håndverker migrerer

Opprett e-postklasse

Du må opprette en klasse som kan sendes for å sende e-post fra Laravel-applikasjonen. Kjør følgende kommando for å opprette e-postklassen Send e-post på stedet app / Mail.

$ php kunsthåndverk: mail SendEmail

Innholdet i denne klassen vises nedenfor. Visningsfilnavnet som brukes i bygge() metoden vil bli opprettet i neste del av denne opplæringen.

navnerom App \ Mail;
bruk Illuminate \ Bus \ Queueable;
bruk Illuminate \ Contracts \ Queue \ ShouldQueue;
bruk Illuminate \ Mail \ Mailable;
bruk Illuminate \ Queue \ SerializesModels;
klasse SendEmail utvider Mailable

bruk kø, SerializesModels;
/ **
* Opprett en ny meldingsforekomst.
*
* @return ugyldig
* /
offentlig funksjon __construct ()

//

/ **
* Bygg meldingen.
*
* @returner $ dette
* /
offentlig funksjonsbygging ()

/ * Definer visningsnavnet som skal brukes til e-postmal * /
returner $ dette-> visning ('e-post');

Lag visning

Lag visningsfilen som heter e-post.blad.php med følgende innhold som vil bli sendt som e-posttekst.

Velkommen til Linux Hint


Lær Laravel enkelt

Lag en jobbklasse

Kjør følgende kommando for å opprette en jobbklasse. Jobbklassens filnavn SenderE-post.php vil bli opprettet på stedet app / jobber.

$ php kunsthåndverk: jobb SendingE-post

Innholdet i SenderE-post.php er vist nedenfor. Du må angi en gyldig e-postadresse inne i til() metoden for håndtak() funksjon for å teste om koden fungerer som den skal. Sett den gyldige e-postadressen i stedet for 'Mottakerens e-postadresse' inne i til() metode for å sjekke om køen fungerer som den skal.

navneområdet App \ Jobber;
bruk Illuminate \ Bus \ Queueable;
bruk Illuminate \ Contracts \ Queue \ ShouldQueue;
bruk Illuminate \ Foundation \ Bus \ Dispatchable;
bruk Illuminate \ Queue \ InteractsWithQueue;
bruk Illuminate \ Queue \ SerializesModels;
/ * Lagt til de nødvendige pakkene * /
bruk Mail;
bruk App \ Mail \ SendEmail;
klasse SendingEmail implementerer ShouldQueue

bruk Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/ **
* Opprett en ny jobbforekomst.
*
* @return ugyldig
* /
offentlig funksjon __construct ()

//

/ **
* Utfør jobben.
*
* @return ugyldig
* /
offentlig funksjonshåndtak ()

/ * Opprett objektet til mailbar klasse og send e-post * /
$ email = ny SendEmail ();
/ * Angi en gyldig e-postadresse * /
Mail :: til ('E-postadresse for mottaker') -> send ($ email);

Opprett kontroller

Kjør følgende kommando for å opprette en kontroller for å håndtere køen. Når handleQueue () funksjonen til kontrolleren utføres, vil køjobben bli presset og e-posten vil bli sendt.

$ php kunsthåndverk: kontroller SendEmailController

SendEmailController.php

navneområde App \ Http \ Controllers;
bruk Illuminate \ Http \ Request;
/ * Legg til de nødvendige pakkene * /
bruk App \ Jobs \ SendingEmail;
bruk Carbon \ Carbon;
klasse SendEmailController utvider Controller

/ **
* Bruke Laravel køer
* /
public function handleQueue ()

/ * Skyv den nye jobben i jobbkøen * /
utsendelse (ny SendingEmail ());
/ * Skriv ut melding etter sending av e-post * /
ekko 'E-post er sendt';

Legg til rute

Åpne nett.php fil fra ruter mappen og legg til følgende rute for å utføre køjobben ved hjelp av kontrolleren.

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

Kjør følgende URL i nettleseren for å sjekke om koden fungerer. Åpne mottakerens e-postadresse for å sjekke om en ny e-post er mottatt.

http: // localhost: 8000 / emailqueue

Legg til forsinkelse

Åpne SenderE-post.php fil på nytt og endre innholdet i handleQueue () funksjon for å legge til fem sekunders forsinkelse i køjobbene.

navneområde App \ Http \ Controllers;
bruk Illuminate \ Http \ Request;
/ * Legg til de nødvendige pakkene * /
bruk App \ Jobs \ SendingEmail;
bruk Carbon \ Carbon;
klasse SendEmailController utvider Controller

/ **
* Bruke Laravel køer
* /
public function handleQueue ()

/ * Opprett et nytt køobjekt med 5 sekunders forsinkelse * /
$ emailJob = (ny SendingEmail ()) -> forsinkelse (Carbon :: nå () -> addSeconds (5));
/ * Skyv den nye jobben i jobbkøen * /
forsendelse ($ emailJob);
/ * Skriv ut melding etter sending av e-post * /
ekko 'E-post sendt etter fem sekunder';

Igjen, kjør følgende URL i nettleseren for å sjekke om koden fungerer. Her vil e-posten bli sendt etter fem sekunder, med forsinkelsesmetoden () på fem sekunder.

http: // localhost: 8000 / emailqueue

Sjekk innboksen til mottakerens e-postadresse for å finne ut om en ny e-post har blitt mottatt etter 5 sekunder. En e-post med følgende innhold vil bli mottatt hvis køjobben fungerer som den skal.

Konklusjon

Denne opplæringen viser veldig enkel bruk av Laravel-køen. Du kan bruke Laravel-køer til forskjellige formål, basert på applikasjonskravene dine. Jeg håper at denne veiledningen har hjulpet leserne til å bedre forstå de grunnleggende konseptene til Laravel-køer.

Kjemp om Wesnoth-opplæringen
Kampen om Wesnoth er et av de mest populære open source-strategispillene du kan spille på dette tidspunktet. Ikke bare har dette spillet vært i utvikl...
0 A.D. Opplæringen
Ut av de mange strategispillene der ute, 0 A.D. klarer å skille seg ut som en omfattende tittel og et veldig dypt, taktisk spill til tross for å være ...
Unity3D opplæring
Introduksjon til Unity 3D Unity 3D er en kraftig spillutviklingsmotor. Det er kryssplattform, det er det lar deg lage spill for mobil, web, stasjonær ...