Samouczek Laravel Queues

Samouczek Laravel Queues
Kolejka Laravel jest jedną z bardziej przydatnych cech frameworka Laravel. Ta funkcja służy do oczekiwania na czasochłonne zadania i wykonywanie zadań w późniejszym czasie, aby poprawić wydajność i wydajność aplikacji Laravel. Ta funkcja zawiera różne rodzaje kolejek na zapleczu, takie jak Amazon SQS, Redis, Beanstalk, sterownik synchroniczny lub relacyjna baza danych. Dyrektor zerowych kolejki służy do odrzucania zadań w kolejce. Plik konfiguracyjny kolejki jest przechowywany w lokalizacji config/kolejka.php. Wspólnym przykładem korzystania z kolejki Laravela jest wysyłanie e -maili. Gdy jest to wymagane do radzenia sobie z dużą liczbą e -maili w aplikacji Laraval, lepiej jest użyć kolejek Laravel, aby przyspieszyć przetwarzanie. Ten samouczek pokazuje, jak używać kolejek laravel do wysyłania dużej liczby e -maili.

Wymagania wstępne

Przed rozpoczęciem tego samouczka, najpierw wykonaj następujące zadania:

  1. Zainstaluj świeży projekt Laravel
  2. Skonfiguruj połączenie bazy danych
  3. Skonfiguruj konfigurację wysyłania wiadomości e -mail (możesz sprawdzić samouczek wysyłania e -maila, aby wysłać e -mail za pomocą SMTP)

Utwórz tabelę

Musisz utworzyć Oferty pracy Tabela w bazie danych do przechowywania wszystkich kolejek. Uruchom następujące polecenie z terminala, aby utworzyć plik migracyjny dla Oferty pracy tabela.

$ PHP Artisan kolejka: Tabela

Możesz otworzyć plik migracji z lokalizacji baza danych/migracje/. Plik zawiera następującą zawartość.

Użyj Illuminate \ Batabase \ Migracja \ Migracja;
Użyj Illuminate \ Database \ Schema \ Blueprint;
Użyj Illuminate \ Support \ faceades \ schemat;
klasa CreateJobstable rozszerza migrację

/**
* Uruchom migracje.
*
* @return void
*/
Funkcja publiczna w górę ()

Schema :: „erson”, funkcja (tabela $)
$ TABLE-> BIGINCREMRES („ID”);
$ TABLE-> String ('queue')-> index ();
$ table-> longText („ładunek”);
$ table-> unsignedtinyInteger („próby”);
$ table-> unsignedInteger ('zastrzeżony_at')-> nullable ();
$ TABLE-> unsignedInteger („Dostępny_at”);
$ table-> unsignedInteger („created_at”);
);

/**
* Odwróć migracje.
*
* @return void
*/
Funkcja publiczna w dół ()

Schema :: Dropifexists („Jobs”);

Uruchom następujące polecenie z terminalu, aby utworzyć stanowisko tabela.

Migruj migruj Artisan $

Utwórz klasę pocztową

Musisz utworzyć klasę wysyłkową, aby wysłać e -maile z aplikacji Laravel. Uruchom następujące polecenie, aby utworzyć nazwaną klasę pocztową Wysłać email w miejscu App/Mail.

$ PHP Artisan Make: Mail Sendentail

Treść tej klasy pokazano poniżej. Nazwa pliku widoku używana w zbudować() Metoda zostanie utworzona w następnej części tego samouczka.

APPAME APP APP \ Mail;
Użyj Illuminate \ Bus \ Queueble;
Użyj Illuminate \ Contracts \ Queue \ shourqueue;
Użyj Illuminate \ Mail \ Mailable;
Użyj Illuminate \ queue \ serializeModels;
Klasa Sendentail rozszerza wysyłkę

Użyj Queue, serializeModels;
/**
* Utwórz nową instancję wiadomości.
*
* @return void
*/
funkcja publiczna __Construct ()

//

/**
* Zbuduj wiadomość.
*
* @return $ to
*/
Funkcja publiczna kompilacja ()

/ * Zdefiniuj nazwę widoku, która będzie używana do szablonu e -mail */
return $ this-> view („e-mail”);

Utwórz widok

Utwórz plik widoku nazwany e-mail.ostrze.php z następującą treścią, która zostanie wysłana jako ciało e -mail.

Witamy w Linux Wskazówka


Naucz się łatwo Laravel

Utwórz klasę pracy

Uruchom następujące polecenie, aby utworzyć klasę zadań. Nazwa pliku klasy pracy Wysyłać email.php zostanie utworzony w lokalizacji App/Jobs.

$ PHP Artisan Make: Praca Wysyłanie wiadomości

Treść Wysyłać email.php pokazano poniżej. Musisz ustawić prawidłowy adres e -mail w środku Do() Metoda uchwyt() funkcja, aby sprawdzić, czy kod działa poprawnie. Ustaw ważny adres e -mail zamiast „Adres e -mail odbiornika” w środku Do() Metoda sprawdzania, czy kolejka działa poprawnie.

APP APP APP APP \ JOBS;
Użyj Illuminate \ Bus \ Queueble;
Użyj Illuminate \ Contracts \ Queue \ shourqueue;
Użyj Illuminate \ Foundation \ bus \ Dispatchable;
Użyj Illuminate \ Queue \ Interactswithqueue;
Użyj Illuminate \ queue \ serializeModels;
/ * Dodano niezbędne pakiety */
Użyj poczty;
Użyj App \ Mail \ SendEmail;
Klasa SendingEmail implementuje Shorqueue

Użyj wysyłki, interakcji, Queueble, serializeModels;
/**
* Utwórz nową instancję pracy.
*
* @return void
*/
funkcja publiczna __Construct ()

//

/**
* Wykonaj zadanie.
*
* @return void
*/
Publiczny uchwyt funkcji ()

/ * Utwórz obiekt klasy wysyłkowej i wyślij e -mail */
$ e -mail = nowy sendEmail ();
/ * Ustaw prawidłowy adres e -mail */
Mail :: do („Adres e-mail odbiornika”)-> Wyślij ($ e-mail);

Utwórz kontroler

Uruchom następujące polecenie, aby utworzyć kontroler do obsługi kolejki. Kiedy Handqueue () Funkcja kontrolera jest wykonywana, zadanie kolejki zostanie wypchnięte, a e -mail wyśle.

$ PHP Artisan Make: kontroler SendEmailController

SendEmailController.php

przestrzeń nazw app \ http \ controllers;
Użyj Illuminate \ http \ żądanie;
/ * Dodaj niezbędne pakiety */
Użyj app \ erson \ sendingEmail;
Użyj węgla \ węglowego;
klasa SendEmailController rozszerza kontroler

/**
* Korzystanie z kolejek laravel
*/
Funkcja publiczna ręka rąkawska ()

/ * Pchnij nową pracę w kolejce pracy */
Dispatch (nowy sendingEMail ());
/ * Wydrukuj wiadomość po wysłaniu e -maila */
Echo „Wysłano e -mail”;

Dodaj trasę

Otworzyć sieć.php plik z trasy Folder i dodaj następującą trasę, aby wykonać zadanie kolejki za pomocą kontrolera.

Trasa :: „e -mail”, „sendEmailController@rudequeue”);

Uruchom następujący adres URL w przeglądarce, aby sprawdzić, czy kod działa. Otwórz adres e -mail odbiornika, aby sprawdzić, czy otrzymano nowy e -mail.

http: // localhost: 8000/e -mailqueue

Dodaj opóźnienie

Otworzyć Wysyłać email.php złożyć ponownie i zmodyfikuj zawartość Handqueue () funkcja, aby dodać pięciosekundowe opóźnienie do zadań w kolejce.

przestrzeń nazw app \ http \ controllers;
Użyj Illuminate \ http \ żądanie;
/ * Dodaj niezbędne pakiety */
Użyj app \ erson \ sendingEmail;
Użyj węgla \ węglowego;
klasa SendEmailController rozszerza kontroler

/**
* Korzystanie z kolejek laravel
*/
Funkcja publiczna ręka rąkawska ()

/ * Utwórz nowy obiekt kolejki z 5 -sekundowym opóźnieniem */
$ e-mailJob = (new sendingEMail ())-> opóźnienie (Carbon :: now ()-> dodatki (5));
/ * Pchnij nową pracę w kolejce pracy */
Dispatch ($ e -mailJob);
/ * Wydrukuj wiadomość po wysłaniu e -maila */
Echo „E -mail wysłany po pięciu sekundach”;

Ponownie uruchom następujący adres URL w przeglądarce, aby sprawdzić, czy kod działa. Tutaj e -mail zostanie wysłany po pięciu sekundach, przy użyciu metody opóźnienia () wynoszącej pięć sekund.

http: // localhost: 8000/e -mailqueue

Sprawdź skrzynkę odbiorczą adresu e -mail odbiornika, aby dowiedzieć się, czy nowy e -mail został odebrany po 5 sekundach. E -mail z następującymi treściami zostanie odebrany, jeśli zadanie kolejki działa poprawnie.

Wniosek

Ten samouczek pokazuje bardzo proste użycie kolejki Laravela. Możesz użyć kolejki Laravela do różnych celów, w oparciu o wymagania dotyczące aplikacji. Mam nadzieję, że ten samouczek pomógł czytelnikom lepiej zrozumieć podstawowe pojęcia kolejek Laravel.