Warunki wstępne
Przed rozpoczęciem tego samouczka najpierw wykonaj następujące zadania:
- Zainstaluj nowy projekt Laravel
- Skonfiguruj połączenie z bazą danych
- 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: tabelaMoż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 phpUtwó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 SendEmailZawartość 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-mailaTreść 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 SendEmailControllerKontroler 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.