laravel

Laravel — samouczek dotyczący kolejek

Laravel — samouczek dotyczący kolejek
Kolejka Laravel to jedna z bardziej przydatnych funkcji frameworka Laravel. Ta funkcja służy do oczekiwania na czasochłonne zadania i wykonywania zadań w późniejszym czasie w celu poprawy wydajności i efektywności aplikacji Laravel. Ta funkcja zapewnia różne typy kolejek w back-endach, takich jak Amazon SQS, Redis, Beanstalk, sterownik synchroniczny lub relacyjna baza danych. Sterownik kolejki zerowej służy do odrzucania zadań w kolejce. Plik konfiguracyjny kolejki jest przechowywany w lokalizacji konfiguracja/kolejka.php. Typowym przykładem korzystania z kolejki Laravel jest wysyłanie e-maili. Gdy w aplikacji Laraval trzeba obsłużyć dużą liczbę e-maili, lepiej użyć kolejek Laravel, aby przyspieszyć przetwarzanie. Ten samouczek pokazuje, jak używać kolejek Laravel do wysyłania dużej liczby e-maili.

Warunki wstępne

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

  1. Zainstaluj nowy projekt Laravel
  2. Skonfiguruj połączenie z bazą danych
  3. Skonfiguruj konfigurację wysyłania e-maili (możesz sprawdzić samouczek wysyłania e-maili, aby wysyłać e-maile za pomocą SMTP)

Utwórz tabelę

Musisz stworzyć Oferty pracy tabela w bazie danych do przechowywania wszystkich kolejek. Uruchom następujące polecenie z terminala, aby utworzyć plik migracji dla Oferty pracy stół.

$ kolejka rzemieślnika php: tabela

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

użyj opcji Iluminacja\Baza danych\Migracje\Migracja;
użyj opcji Iluminacja\Baza danych\Schemat\Blueprint;
użyj opcji Oświetl\Wsparcie\Fasady\Schemat;
class CreateJobsTable rozszerza Migrację

/**
* Uruchom migracje.
*
* @zwrot nieważny
*/
funkcja publiczna w górę()

Schema::create('jobs', function (Blueprint $table)
$table->bigIncrements('id');
$table->string('kolejka')->index();
$table->longText('payload');
$table->unsignedTinyInteger('próby');
$table->unsignedInteger('reserved_at')->nullable();
$table->unsignedInteger('available_at');
$table->unsignedInteger('created_at');
);

/**
* Odwróć migracje.
*
* @zwrot nieważny
*/
funkcja publiczna wyłączona()

Schemat::dropIfExists('zadania');

Uruchom następujące polecenie z terminala, aby utworzyć praca stół.

$ migracji rzemieślnika php

Utwórz klasę poczty

Aby wysyłać e-maile z aplikacji Laravel, musisz utworzyć klasę, którą można wysyłać pocztą. Uruchom następujące polecenie, aby utworzyć klasę poczty o nazwie Wysłać email w lokalizacji aplikacja/poczta.

$ php artisan make:mail SendEmail

Zawartość tej klasy jest pokazana poniżej. Nazwa pliku widoku używana w budować() metoda zostanie utworzona w dalszej części tego samouczka.

przestrzeń nazw Aplikacja\Poczta;
użyj oświetlenia\Bus\Queueable;
użyj opcji Iluminuj\Kontrakty\Kolejka\ShouldQueue;
użyj Illuminate\Mail\Mailable;
użyj Illuminate\Queue\SerializesModels;
klasa SendEmail rozszerza Mailable

użyj Queueable, SerializesModels;
/**
* Utwórz nową instancję wiadomości.
*
* @zwrot nieważny
*/
funkcja publiczna __construct()

//

/**
* Zbuduj wiadomość.
*
* @return $this
*/
budowanie funkcji publicznych()

/* Zdefiniuj nazwę widoku, która będzie używana w szablonie wiadomości e-mail */
return $this->view('email');

Utwórz widok

Utwórz plik widoku o nazwie e-mail.nóż.php z następującą treścią, która zostanie wysłana jako treść wiadomości e-mail.

Witamy w Linuksie Podpowiedź


Łatwo naucz się Laravela

Utwórz klasę pracy

Uruchom następujące polecenie, aby utworzyć klasę zadań. Nazwa pliku klasy zadania o nazwie Wysyłać email.php zostanie utworzony w lokalizacji aplikacja/Praca.

$ php artisan make:job Wysyłanie e-maila

Treść Wysyłać email.php pokazano poniżej. Musisz ustawić prawidłowy adres e-mail wewnątrz do() metoda uchwyt() funkcja do testowania, czy kod działa poprawnie. Ustaw prawidłowy adres e-mail w miejscu „Adres e-mail odbiorcy” w środku do() metoda sprawdzania, czy kolejka działa prawidłowo.

przestrzeń nazw App\Jobs;
użyj oświetlenia\Bus\Queueable;
użyj opcji Iluminuj\Kontrakty\Kolejka\ShouldQueue;
użyj opcji Oświetl\Fundacja\Bus\Wysyłane;
użyj Illuminate\Queue\InteractsWithQueue;
użyj Illuminate\Queue\SerializesModels;
/* Dodano niezbędne pakiety */
korzystać z poczty;
użyj aplikacji \ poczta \ wyślij e-mail;
klasa SendingEmail implementuje ShouldQueue

użyj Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Utwórz nową instancję pracy.
*
* @zwrot nieważny
*/
funkcja publiczna __construct()

//

/**
* Wykonaj pracę.
*
* @zwrot nieważny
*/
uchwyt funkcji publicznej()

/* Utwórz obiekt klasy mailable i wyślij e-mail */
$email = nowy SendEmail();
/* Ustaw poprawny adres e-mail */
Mail::to('Adres e-mail odbiorcy ')->send($email);

Utwórz kontroler

Uruchom następujące polecenie, aby utworzyć kontroler do obsługi kolejki. Kiedy obsługuj kolejkę() funkcja kontrolera zostanie wykonana, zadanie kolejki zostanie przesunięte, a wiadomość e-mail zostanie wysłana.

$ php artisan make:kontroler SendEmailController

Kontroler wysyłania e-maili.php

przestrzeń nazw App\Http\Controllers;
użyj Iluminate\Http\Request;
/* Dodaj potrzebne pakiety */
użyj App\Jobs\SendingEmail;
użyj węgla\węgla;
klasa SendEmailController rozszerza kontroler

/**
* Korzystanie z kolejek Laravel
*/
funkcja publiczna handleQueue()

/* Umieść nowe zadanie w kolejce zadań */
wysyłka(nowy SendingEmail());
/* Wydrukuj wiadomość po wysłaniu e-maila */
echo 'E-mail został wysłany';

Dodaj trasę

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

Route::get('email', '[email protected]');

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

http://localhost:8000/kolejka e-mail

Dodaj opóźnienie

Otworzyć Wysyłać email.php plik ponownie i zmodyfikuj zawartość obsługuj kolejkę() funkcja dodawania pięciosekundowego opóźnienia do kolejki zadań.

przestrzeń nazw App\Http\Controllers;
użyj Iluminuj \ HTTP \ Żądanie;
/* Dodaj potrzebne pakiety */
użyj App\Jobs\SendingEmail;
użyj węgla\węgla;
klasa SendEmailController rozszerza kontroler

/**
* Korzystanie z kolejek Laravel
*/
funkcja publiczna handleQueue()

/* Utwórz nowy obiekt kolejki z 5-sekundowym opóźnieniem */
$emailJob = (nowy SendingEmail())->delay(Carbon::now()->addSeconds(5));
/* Umieść nowe zadanie w kolejce zadań */
wysyłka($emailJob);
/* 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 wiadomość e-mail zostanie wysłana po pięciu sekundach, przy użyciu metody delay() wynoszącej pięć sekund.

http://localhost:8000/kolejka e-mail

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

Wniosek

Ten samouczek pokazuje bardzo proste użycie kolejki Laravel. Możesz używać kolejek Laravel do różnych celów, w zależności od wymagań aplikacji. Mam nadzieję, że ten poradnik pomógł czytelnikom lepiej zrozumieć podstawowe pojęcia kolejek Laravela.

How to change Left & Right mouse buttons on Windows 10 PC
It's quite a norm that all computer mouse devices are ergonomically designed for right-handed users. But there are mouse devices available which are s...
Emulate Mouse clicks by hovering using Clickless Mouse in Windows 10
Using a mouse or keyboard in the wrong posture of excessive usage can result in a lot of health issues, including strain, carpal tunnel syndrome, and ...
Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...