laravel

Підручник з черг Laravel

Підручник з черг Laravel
Черга Laravel - одна з найбільш корисних функцій фреймворку Laravel. Ця функція використовується для очікування трудомістких завдань та виконання завдань пізніше для підвищення продуктивності та ефективності програми Laravel. Ця функція забезпечує різні типи черг у фонових точках, таких як Amazon SQS, Redis, Beanstalk, синхронний драйвер або реляційна база даних. Драйвер нульової черги використовується для відхилення завдань, що стоять у черзі. Файл конфігурації черги зберігається в розташуванні конфігурація / черга.php. Поширеним прикладом використання черги Laravel є надсилання електронних листів. Коли потрібно мати справу з великою кількістю електронних листів у програмі Laraval, тоді краще використовувати черги Laravel, щоб прискорити обробку. Цей підручник показує, як використовувати черги Laravel для надсилання великої кількості електронних листів.

Передумови

Перш ніж розпочати цей підручник, спочатку виконайте такі завдання:

  1. Встановіть новий проект Laravel
  2. Налаштуйте підключення до бази даних
  3. Налаштування конфігурації для надсилання електронних листів (Ви можете перевірити підручник з надсилання електронної пошти для надсилання електронної пошти за допомогою SMTP)

Створити таблицю

Ви повинні створити робочі місця таблиці в базі даних для зберігання всіх черг. Виконайте наступну команду з терміналу, щоб створити файл міграції для робочі місця таблиця.

Черга ремісників $ php: таблиця

Ви можете відкрити файл міграції з цього місця база даних / міграції /. Файл містить такий вміст.

використовувати Illuminate \ Database \ Migrations \ Migration;
використовувати Illuminate \ Database \ Schema \ Blueprint;
використовувати Illuminate \ Support \ Facades \ Schema;
клас CreateJobsTable розширює міграцію

/ **
* Запустіть міграції.
*
* @return void
* /
публічна функція вгору ()

Schema :: create ('jobs', function (Blueprint $ table)
$ table-> bigIncrements ('id');
$ table-> string ('queue') -> index ();
$ table-> longText ('корисне навантаження');
$ table-> unsignedTinyInteger ('спроби');
$ table-> unsignedInteger ('protected_at') -> nullable ();
$ table-> unsignedInteger ('available_at');
$ table-> unsignedInteger ('created_at');
);

/ **
* Зворотне переміщення.
*
* @return void
* /
публічна функція знижена ()

Schema :: dropIfExists ('вакансії');

Виконайте наступну команду з терміналу, щоб створити робота таблиця.

$ php ремісник перенести

Створити клас пошти

Ви повинні створити доступний клас для надсилання електронних листів із програми Laravel. Виконайте наступну команду, щоб створити поштовий клас з іменем Відправити лист в місці додаток / пошта.

$ php artisan make: mail SendEmail

Зміст цього класу показано нижче. Ім'я файлу подання, яке використовується в build () метод буде створений у наступній частині цього посібника.

Простір імен App \ Mail;
використовувати Illuminate \ Bus \ Queueable;
використовувати Illuminate \ Contracts \ Queue \ ShouldQueue;
використовувати Illuminate \ Mail \ Mailable;
використовувати Illuminate \ Queue \ SerializesModels;
клас SendEmail розширює доступність

використовувати Queueable, SerializesModels;
/ **
* Створіть новий екземпляр повідомлення.
*
* @return void
* /
публічна функція __construct ()

//

/ **
* Створіть повідомлення.
*
* @return $ this
* /
публічна функція build ()

/ * Визначте ім’я подання, яке буде використовуватися для шаблону електронної пошти * /
повернути $ this-> view ('email');

Створити подання

Створіть файл подання з іменем електронною поштою.лезо.php із наступним вмістом, який буде надіслано як основне повідомлення електронної пошти.

Ласкаво просимо до підказки Linux


Вивчіть Laravel легко

Створіть клас роботи

Виконайте наступну команду, щоб створити клас завдання. Ім'я файлу класу завдання Надсилання електронної пошти.php буде створено в цьому місці додаток / Вакансії.

$ php artisan make: job SendingEmail

Зміст Надсилання електронної пошти.php показано нижче. Ви повинні встановити дійсну електронну адресу всередині до () метод ручка () функція для перевірки правильності роботи коду. Встановіть дійсну електронну адресу замість 'Адреса електронної пошти одержувача' всередині до () метод перевірити, чи черга працює належним чином.

Простір імен App \ Jobs;
використовувати Illuminate \ Bus \ Queueable;
використовувати Illuminate \ Contracts \ Queue \ ShouldQueue;
використовувати Illuminate \ Foundation \ Bus \ Dispatchable;
використовувати Illuminate \ Queue \ InteractsWithQueue;
використовувати Illuminate \ Queue \ SerializesModels;
/ * Додано необхідні пакети * /
використовувати пошту;
використовувати App \ Mail \ SendEmail;
клас SendingEmail реалізує ShouldQueue

використовувати Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/ **
* Створіть новий екземпляр завдання.
*
* @return void
* /
публічна функція __construct ()

//

/ **
* Виконати роботу.
*
* @return недійсне
* /
дескриптор публічної функції ()

/ * Створіть об’єкт доступного класу та надішліть електронний лист * /
$ email = новий SendEmail ();
/ * Встановіть дійсну адресу електронної пошти * /
Mail :: to ('Адреса електронної пошти одержувача') -> надіслати ($ email);

Створіть контролер

Виконайте наступну команду, щоб створити контролер для обробки черги. Коли handleQueue () функція контролера виконана, завдання черги буде висунуто, і електронне повідомлення буде надіслано.

$ php artisan make: контролер SendEmailController

SendEmailController.php

простір імен App \ Http \ Controllers;
використовувати Illuminate \ Http \ Request;
/ * Додайте необхідні пакети * /
використовувати App \ Jobs \ SendingEmail;
використовувати Carbon \ Carbon;
клас SendEmailController розширює Controller

/ **
* Використання черг Laravel
* /
відкрита функція handleQueue ()

/ * Натисніть нове завдання в черзі завдань * /
відправка (новий SendingEmail ());
/ * Роздрукувати повідомлення після надсилання електронного листа * /
echo 'Електронну пошту надіслано';

Додати маршрут

Відкрийте веб.php файл із маршрути папки та додайте такий маршрут для виконання завдання черги за допомогою контролера.

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

Запустіть у веб-переглядачі таку URL-адресу, щоб перевірити, чи працює код. Відкрийте адресу електронної пошти приймача, щоб перевірити, чи отримано нове повідомлення електронної пошти.

http: // localhost: 8000 / emailqueue

Додати затримку

Відкрийте Надсилання електронної пошти.php файл ще раз і змінити вміст handleQueue () функція, щоб додати п'ятисекундну затримку до завдань черги.

простір імен App \ Http \ Controllers;
використовувати Illuminate \ Http \ Request;
/ * Додайте необхідні пакети * /
використовувати App \ Jobs \ SendingEmail;
використовувати Carbon \ Carbon;
клас SendEmailController розширює Controller

/ **
* Використання черг Laravel
* /
відкрита функція handleQueue ()

/ * Створити новий об’єкт черги із затримкою 5 секунд * /
$ emailJob = (new SendingEmail ()) -> delay (Carbon :: now () -> addSeconds (5));
/ * Натисніть нове завдання в черзі завдань * /
відправка ($ emailJob);
/ * Роздрукувати повідомлення після надсилання електронного листа * /
echo 'Електронна пошта надіслана через п'ять секунд';

Знову запустіть наступну URL-адресу у браузері, щоб перевірити, чи працює код. Тут електронне повідомлення буде надіслано через п’ять секунд із використанням методу delay () у п’ять секунд.

http: // localhost: 8000 / emailqueue

Перевірте поштову скриньку адреси електронної пошти одержувача, щоб з’ясувати, чи отримано нове повідомлення через 5 секунд. Якщо завдання черги працює належним чином, буде отримано електронний лист із таким вмістом.

Висновок

Цей підручник показує дуже просте використання черги Laravel. Ви можете використовувати черги Laravel для різних цілей, виходячи з вимог до вашої програми. Я сподіваюся, що цей посібник допоміг читачам краще зрозуміти основні поняття черг Laravel.

OpenTTD Tutorial
OpenTTD is one of the most popular business simulation games out there. In this game, you need to create a wonderful transportation business. However,...
SuperTuxKart for Linux
SuperTuxKart is a great title designed to bring you the Mario Kart experience free of charge on your Linux system. It is pretty challenging and fun to...
Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...