Forutsetninger
Før du begynner på denne opplæringen, må du fullføre følgende oppgaver:
- Installer et nytt Laravel-prosjekt
- Sett opp databasetilkoblingen
- 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ø: tabellDu 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 migrererOpprett 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 SendEmailInnholdet 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-postInnholdet 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 SendEmailControllerSendEmailController.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.