Laravel Queues Tutorial

Laravel Queues Tutorial
Laravel -køen er en av de mer nyttige funksjonene i Laravel Framework. 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 back-ender, for eksempel Amazon Sqs, Redis, Beanstalk, Synchronous Driver eller Relational Database. En driver med nullkø brukes til å kaste kø. Konfigurasjonsfilen til køen er lagret på stedet konfigurasjon/kø.PHP. Et vanlig eksempel på å bruke Laravel -køen er å sende e -post. Når det kreves å håndtere et stort antall e -postmeldinger i Laraval -applikasjonen, er det bedre å bruke Laravel -køer for å få fart på behandlingen. Denne opplæringen viser hvordan du bruker Laravel -køer for å sende et stort antall e -postmeldinger.

Forutsetninger

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

  1. Installer et ferskt Laravel -prosjekt
  2. Sett opp databasetilkoblingen
  3. Sett opp konfigurasjonen for å sende e -postene (du kan sjekke e -posten som sender opplæringen for å sende e -post ved hjelp av SMTP)

Lag tabell

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

$ php håndverkskø: tabell

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

Bruk Illuminate \ Database \ Migrations \ Migration;
Bruk Illuminate \ Database \ Schema \ Blueprint;
Bruk Illuminate \ Support \ Facades \ skjema;
klasse CreateJobstable utvider migrasjonen

/**
* Kjør migrasjonene.
*
* @return void
*/
offentlig funksjon opp ()

Skjema :: Create ('Jobs', Function (Blueprint $ Table)
$ tabell-> bigincrements ('id');
$ tabell-> String ('kø')-> indeks ();
$ tabell-> longText ('nyttelast');
$ tabell-> usignedtinyInteger ('forsøk');
$ tabell-> usignedInteger ('reservert_at')-> nullable ();
$ tabell-> usignedInteger ('tilgjengelig_at');
$ tabell-> usignedInteger ('createT_at');
);

/**
* Omvend migrasjonene.
*
* @return void
*/
offentlig funksjon ned ()

Skjema :: drofexists ('jobber');

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

$ php håndverker migrerer

Lag postklasse

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

$ PHP Artisan Make: Mail sendemail

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

namespace app \ mail;
Bruk Illuminate \ Bus \ Queueable;
Bruk Illuminate \ Contracts \ Queue \ Shouldqueue;
Bruk Illuminate \ Mail \ Sendelig;
Bruk Illuminate \ Queue \ SerializesModels;
Klasse SendEmail utvider sendbar

Bruk queueable, serialisesmodeller;
/**
* Opprett en ny meldingsforekomst.
*
* @return void
*/
offentlig funksjon __konstruksjon ()

//

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

/ * Definer visningsnavnet som vil bli brukt til e -postmal */
returner $ this-> visning ('e-post');

Lag visning

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

Velkommen til Linux Hint


Lær Laravel enkelt

Lag en jobbklasse

Kjør følgende kommando for å opprette en jobbklasse. Jobbklassefilnavnet som heter Sendingsmail.PHP vil bli opprettet på stedet app/jobber.

$ PHP Artisan Make: Job Sending Email

Innholdet i Sendingsmail.PHP vises nedenfor. Du må angi en gyldig e -postadresse i til() metode for håndtak() funksjon for å teste om koden fungerer som den skal. Angi den gyldige e -postadressen i stedet for 'Mottaker e -postadresse' inne i til() metode for å sjekke om køen fungerer som den skal.

namespace app \ jobber;
Bruk Illuminate \ Bus \ Queueable;
Bruk Illuminate \ Contracts \ Queue \ Shouldqueue;
Bruk Illuminate \ Foundation \ Bus \ Sendbar;
Bruk Illuminate \ Queue \ InteractSwithQueue;
Bruk Illuminate \ Queue \ SerializesModels;
/ * Lagt til de nødvendige pakkene */
Bruk e -post;
Bruk app \ mail \ sendemail;
Klassesendingsmail redskaper bør

Bruk utsendbare, interaktive swithqueue, queueable, serialisesmodeller;
/**
* Opprett en ny jobbinstans.
*
* @return void
*/
offentlig funksjon __konstruksjon ()

//

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

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

Lag kontroller

Kjør følgende kommando for å opprette en kontroller for å håndtere køen. Når HandleQueue () Funksjonen til kontrolleren utføres, køjobben blir presset og e -posten vil sende.

$ PHP Artisan Make: Controller SendEmailController

SendEmailController.PHP

namespace -app \ http \ kontrollere;
Bruk Illuminate \ http \ forespørsel;
/ * Legg til de nødvendige pakkene */
Bruk app \ Jobs \ SendingEmail;
Bruk karbon \ karbon;
Klasse SendEmailController utvider kontrolleren

/**
* Bruke Laravel -køer
*/
Offentlig funksjon HandleQueue ()

/ * Skyv den nye jobben i jobbkøen */
Dispatch (ny sendingEmail ());
/ * Skriv ut melding etter sendt e -post */
Echo 'e -post er sendt';

Legg til rute

Åpne Web.PHP fil fra ruter mappe og legg til følgende rute for å utføre køjobben ved hjelp av kontrolleren.

Rute :: Get ('E -post', 'SendEmailController@HandleQueue');

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

http: // localhost: 8000/e -postmelding

Legg til forsinkelse

Åpne Sendingsmail.PHP fil igjen og endre innholdet i HandleQueue () Funksjon for å legge til fem sekunders forsinkelse i køjobbene.

namespace -app \ http \ kontrollere;
Bruk Illuminate \ http \ forespørsel;
/ * Legg til de nødvendige pakkene */
Bruk app \ Jobs \ SendingEmail;
Bruk karbon \ karbon;
Klasse SendEmailController utvider kontrolleren

/**
* Bruke Laravel -køer
*/
Offentlig funksjon HandleQueue ()

/ * Opprett et nytt køobjekt med 5 sekunders forsinkelse */
$ e-postJOB = (ny sendingEmail ())-> forsinkelse (karbon :: nå ()-> addSeConds (5));
/ * Skyv den nye jobben i jobbkøen */
Dispatch ($ e -postJob);
/ * Skriv ut melding etter sendt e -post */
ekko 'e -post sendt etter fem sekunder';

Kjør igjen følgende URL i nettleseren for å sjekke om koden fungerer. Her vil e -posten bli sendt etter fem sekunder ved å bruke forsinkelsesmetoden på fem sekunder.

http: // localhost: 8000/e -postmelding

Sjekk innboksen til mottakerens e -postadresse for å finne ut om en ny e -post er 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å søknadskravene dine. Jeg håper at denne opplæringen har hjulpet leserne med å forstå de grunnleggende begrepene Laravel -køer bedre.