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:
- Installer et ferskt Laravel -prosjekt
- Sett opp databasetilkoblingen
- 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.