laravel

Výukový program Laravel Queues

Výukový program Laravel Queues
Fronta Laravel je jednou z užitočnejších funkcií rámca Laravel. Táto funkcia sa používa na čakanie na časovo náročné úlohy a vykonávanie úloh neskôr, aby sa zlepšil výkon a efektívnosť aplikácie Laravel. Táto funkcia poskytuje rôzne typy frontov v back-endoch, ako napríklad Amazon SQS, Redis, Beanstalk, synchrónny ovládač alebo relačná databáza. Na zahodenie úloh zaradených do frontu sa používa nulový ovládač frontu. Konfiguračný súbor frontu je uložený v umiestnení konfigurácia / fronta.php. Bežným príkladom použitia frontu laravel je posielanie e-mailov. Ak je potrebné v aplikácii Laraval pracovať s veľkým počtom e-mailov, je lepšie na urýchlenie spracovania použiť fronty Laravel. Tento tutoriál ukazuje, ako používať fronty laravel na odosielanie veľkého počtu e-mailov.

Predpoklady

Pred začatím tohto tutoriálu najskôr vykonajte nasledujúce úlohy:

  1. Nainštalujte si nový projekt Laravel
  2. Nastavte pripojenie k databáze
  3. Nastavte konfiguráciu pre odosielanie e-mailov (Môžete si prečítať návod na odosielanie e-mailov na odosielanie e-mailov pomocou protokolu SMTP)

Vytvorte tabuľku

Musíte vytvoriť pracovných miest tabuľky v databáze na uloženie všetkých front. Spustením nasledujúceho príkazu z terminálu vytvorte migračný súbor pre server pracovných miest stôl.

Poradie remeselníkov $ php: tabuľka

Migračný súbor môžete otvoriť z umiestnenia databáza / migrácie /. Súbor obsahuje nasledujúci obsah.

použite Illuminate \ Database \ Migrations \ Migration;
použite Illuminate \ Database \ Schema \ Blueprint;
použite Illuminate \ Support \ Fasády \ Schéma;
trieda CreateJobsTable rozširuje migráciu

/ **
* Spustite migrácie.
*
* @return neplatné
* /
verejná funkcia hore ()

Schema :: create ('jobs', function (Blueprint $ table)
$ table-> bigIncrements ('id');
$ table-> string ('queue') -> index ();
$ table-> longText ('užitočné zaťaženie');
$ table-> unsignedTinyInteger ('pokusy');
$ table-> unsignedInteger ('reserved_at') -> nullable ();
$ table-> unsignedInteger ('available_at');
$ table-> unsignedInteger ('created_at');
);

/ **
* Zvrátiť migráciu.
*
* @return neplatné
* /
verejná funkcia dole ()

Schema :: dropIfExists ('jobs');

Spustením nasledujúceho príkazu z terminálu vytvorte zamestnanie stôl.

$ php remeselník migruje

Vytvorte triedu pošty

Musíte vytvoriť vytvoriteľnú triedu na odosielanie e-mailov z aplikácie Laravel. Spustením nasledujúceho príkazu vytvorte triedu pošty s názvom Poslať email na danom mieste aplikácia / pošta.

$ php remeselník make: mail SendEmail

Obsah tejto triedy je uvedený nižšie. Zobraziť názov súboru, ktorý sa používa v priečinku build () metóda bude vytvorená v nasledujúcej časti tohto tutoriálu.

menný priestor App \ Mail;
použitie Illuminate \ Bus \ Queueable;
použite Illuminate \ Contracts \ Queue \ ShouldQueue;
použite Illuminate \ Mail \ Mailable;
použite Illuminate \ Queue \ SerializesModels;
trieda SendEmail rozširuje možnosti správy

používať Queueable, SerializesModels;
/ **
* Vytvorte novú inštanciu správy.
*
* @return neplatné
* /
verejná funkcia __construct ()

//

/ **
* Vytvorte správu.
*
* @ návrat $ this
* /
zostavenie verejnej funkcie ()

/ * Definujte názov zobrazenia, ktorý sa použije pre e-mailovú šablónu * /
vrátiť $ this-> view ('email');

Vytvoriť pohľad

Vytvorte súbor zobrazenia s názvom e-mail.čepeľ.php s nasledujúcim obsahom, ktorý sa odošle ako telo e-mailu.

Vitajte v názve systému Linux


Naučte sa Laravel ľahko

Vytvorte triedu práce

Spustením nasledujúceho príkazu vytvorte triedu práce. Názov triedy práce s názvom SendingEmail.php sa vytvorí v umiestnení aplikácia / Pracovné miesta.

$ php artisan make: job SendingEmail

Obsah SendingEmail.php je zobrazený nižšie. Musíte zadať platnú e-mailovú adresu vo vnútri servera do () metóda rukoväť () funkcia na otestovanie, či kód funguje správne. Zadajte platnú e-mailovú adresu namiesto „E-mailová adresa príjemcu“ vnútri do () metóda na kontrolu, či fronta funguje správne.

menný priestor App \ Jobs;
použitie Illuminate \ Bus \ Queueable;
použite Illuminate \ Contracts \ Queue \ ShouldQueue;
použite Illuminate \ Foundation \ Bus \ Dispatchable;
použite Illuminate \ Queue \ InteractsWithQueue;
použite Illuminate \ Queue \ SerializesModels;
/ * Pridané potrebné balíčky * /
používať Mail;
používať App \ Mail \ SendEmail;
trieda SendingEmail implementuje ShouldQueue

používať Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/ **
* Vytvorte novú inštanciu úlohy.
*
* @return neplatné
* /
verejná funkcia __construct ()

//

/ **
* Vykonajte prácu.
*
* @return neplatné
* /
verejná funkcia handle ()

/ * Vytvorte objekt triedy mailable a pošlite e-mail * /
$ email = nový SendEmail ();
/ * Nastavte platnú e-mailovú adresu * /
Mail :: to ('Receiver Email Address') -> send ($ email);

Vytvorte radič

Spustením nasledujúceho príkazu vytvorte radič na spracovanie frontu. Keď handleQueue () je vykonaná funkcia radiča, bude zaradená úloha do fronty a e-mail odošle.

$ php remeselník make: kontrolór SendEmailController

SendEmailController.php

menný priestor App \ Http \ Controllers;
použite Illuminate \ Http \ Request;
/ * Pridajte potrebné balíčky * /
používať App \ Jobs \ SendingEmail;
používať uhlík \ uhlík;
trieda SendEmailController rozširuje radič

/ **
* Používanie laravelových front
* /
verejná funkcia handleQueue ()

/ * Zatlačte novú úlohu do frontu úloh * /
Expedícia (nové SendingEmail ());
/ * Tlač správy po odoslaní e-mailu * /
echo 'E-mail bol odoslaný';

Pridať trasu

Otvor web.php súbor z trás priečinok a pridajte nasledujúcu cestu na vykonanie úlohy frontu pomocou radiča.

Route :: get ('email', '[e-mail chránený]');

Spustením nasledujúcej adresy URL v prehliadači skontrolujte, či kód funguje. Otvorte e-mailovú adresu príjemcu a skontrolujte, či bol prijatý nový e-mail.

http: // localhost: 8000 / emailqueue

Pridajte oneskorenie

Otvor SendingEmail.php súbor znova a upravte obsah súboru handleQueue () funkcia na pridanie päťsekundového oneskorenia k úlohám vo fronte.

menný priestor App \ Http \ Controllers;
použite Illuminate \ Http \ Request;
/ * Pridajte potrebné balíčky * /
používať App \ Jobs \ SendingEmail;
používať uhlík \ uhlík;
trieda SendEmailController rozširuje radič

/ **
* Používanie laravelových front
* /
verejná funkcia handleQueue ()

/ * Vytvorte nový objekt frontu s 5-sekundovým oneskorením * /
$ emailJob = (nový SendingEmail ()) -> oneskorenie (Carbon :: now () -> addSeconds (5));
/ * Zatlačte novú úlohu do frontu úloh * /
Expedícia ($ emailJob);
/ * Tlač správy po odoslaní e-mailu * /
echo 'E-mail odoslaný po piatich sekundách';

V prehliadači znova spustite nasledujúcu adresu URL, aby ste skontrolovali, či kód funguje. Tu bude e-mail odoslaný po piatich sekundách pomocou metódy delay () v trvaní piatich sekúnd.

http: // localhost: 8000 / emailqueue

Skontrolujte doručenú poštu e-mailovej adresy príjemcu a zistite, či bol po 5 sekundách prijatý nový e-mail. Ak úloha vo fronte funguje správne, dostanete e-mail s nasledujúcim obsahom.

Záver

Tento tutoriál ukazuje veľmi jednoduché použitie frontu Laravel. Fronty Laravel môžete použiť na rôzne účely na základe vašich požiadaviek na aplikáciu. Dúfam, že tento tutoriál pomohol čitateľom lepšie pochopiť základné pojmy laravelových front.

Napodobňovanie kliknutí myšou vznášaním sa pomocou myši bez myši vo Windows 10
Používanie myši alebo klávesnice v nesprávnom postoji k nadmernému používaniu môže mať za následok veľa zdravotných problémov vrátane napätia, syndróm...
Pridajte gestá myši do systému Windows 10 pomocou týchto bezplatných nástrojov
V posledných rokoch sa počítače a operačné systémy veľmi vyvinuli. Boli časy, keď používatelia museli prechádzať správcami súborov pomocou príkazov. R...
Ovládajte a spravujte pohyb myši medzi viacerými monitormi v systéme Windows 10
Správca myši s duálnym displejom umožňuje ovládať a konfigurovať pohyb myši medzi viacerými monitormi spomalením jeho pohybu blízko hranice. Windows 1...