Предпосылки
Перед тем, как начать это руководство, сначала выполните следующие задачи:
- Установите новый проект Laravel
- Настроить соединение с базой данных
- Настройте конфигурацию для отправки электронных писем (вы можете проверить руководство по отправке электронной почты, чтобы отправить электронное письмо с помощью SMTP)
Создать таблицу
Вы должны создать рабочие места таблица в базе данных для хранения всех очередей. Выполните следующую команду из терминала, чтобы создать файл миграции для рабочие места Таблица.
Очередь $ php artisan: таблицаВы можете открыть файл миграции из папки база данных / миграции /. Файл содержит следующее содержимое.
используйте Illuminate \ Database \ Migrations \ Migration;используйте Illuminate \ Database \ Schema \ Blueprint;
используйте Illuminate \ Support \ Facades \ Schema;
class CreateJobsTable расширяет Migration
/ **
* Запустите миграции.
*
* @return void
* /
публичная функция вверх ()
Schema :: create ('jobs', function (Blueprint $ table)
$ table-> bigIncrements ('идентификатор');
$ table-> string ('очередь') -> index ();
$ table-> longText ('полезная нагрузка');
$ table-> unsignedTinyInteger ('попытки');
$ table-> unsignedInteger ('зарезервировано_at') -> nullable ();
$ table-> unsignedInteger ('доступный_в');
$ таблица-> unsignedInteger ('created_at');
);
/ **
* Отменить миграции.
*
* @return void
* /
публичная функция вниз ()
Schema :: dropIfExists ('вакансии');
Выполните следующую команду из терминала, чтобы создать работа Таблица.
$ php artisan migrateСоздать класс почты
Вы должны создать почтовый класс для отправки писем из приложения Laravel. Выполните следующую команду, чтобы создать почтовый класс с именем SendEmail в месте приложение / Почта.
$ php artisan make: mail SendEmailСодержание этого класса показано ниже. Имя файла представления, которое используется в строить() метод будет создан в следующей части этого урока.
пространство имен App \ Mail;используйте Illuminate \ Bus \ Queueable;
используйте Illuminate \ Contracts \ Queue \ ShouldQueue;
используйте Illuminate \ Mail \ Mailable;
используйте Illuminate \ Queue \ SerializesModels;
class SendEmail расширяет Mailable
используйте Queueable, SerializesModels;
/ **
* Создать новый экземпляр сообщения.
*
* @return void
* /
публичная функция __construct ()
//
/ **
* Создайте сообщение.
*
* @return $ this
* /
публичная функция build ()
/ * Определяем имя представления, которое будет использоваться для шаблона электронной почты * /
return $ this-> view ('электронная почта');
Создать представление
Создайте файл представления с именем электронное письмо.лезвие.php со следующим содержимым, которое будет отправлено в теле письма.
Добро пожаловать в Linux Hint
Изучите Laravel легко
Создать класс работы
Выполните следующую команду, чтобы создать класс задания. Имя файла класса задания Отправка электронной почты.php будет создан в локации приложение / Вакансии.
$ php artisan make: задание Отправка электронной почтыСодержание Отправка электронной почты.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 void
* /
дескриптор публичной функции ()
/ * Создаем объект почтового класса и отправляем электронное письмо * /
$ email = новый SendEmail ();
/ * Установить действующий адрес электронной почты * /
Mail :: to ('Адрес электронной почты получателя') -> отправить ($ email);
Создать контроллер
Выполните следующую команду, чтобы создать контроллер для обработки очереди. Когда handleQueue () функция контроллера выполняется, задание очереди будет отправлено, и электронное письмо будет отправлено.
$ php artisan make: контроллер SendEmailControllerSendEmailController.php
пространство имен App \ Http \ Controllers;используйте Illuminate \ Http \ Request;
/ * Добавляем необходимые пакеты * /
используйте App \ Jobs \ SendingEmail;
используйте Carbon \ Carbon;
класс SendEmailController расширяет контроллер
/ **
* Использование очередей Laravel
* /
общедоступная функция handleQueue ()
/ * Помещаем новое задание в очередь заданий * /
отправка (новый SendingEmail ());
/ * Распечатать сообщение после отправки письма * /
echo «Электронное письмо было отправлено»;
Добавить маршрут
Открой сеть.php файл из маршруты папку и добавьте следующий маршрут для выполнения задания очереди с помощью контроллера.
Route :: get ('электронная почта', '[электронная почта защищена]');Запустите следующий URL-адрес в браузере, чтобы проверить, работает ли код. Откройте адрес электронной почты получателя, чтобы проверить, было ли получено новое письмо.
http: // локальный: 8000 / emailqueue
Добавить задержку
Открой Отправка электронной почты.php файл еще раз и измените содержимое handleQueue () функция для добавления пятисекундной задержки к заданиям в очереди.
пространство имен App \ Http \ Controllers;используйте Illuminate \ Http \ Request;
/ * Добавляем необходимые пакеты * /
используйте App \ Jobs \ SendingEmail;
используйте Carbon \ Carbon;
класс SendEmailController расширяет контроллер
/ **
* Использование очередей Laravel
* /
общедоступная функция handleQueue ()
/ * Создаем новый объект очереди с задержкой 5 секунд * /
$ emailJob = (new SendingEmail ()) -> delay (Carbon :: now () -> addSeconds (5));
/ * Помещаем новое задание в очередь заданий * /
отправка ($ emailJob);
/ * Распечатать сообщение после отправки письма * /
echo «Электронное письмо отправлено через пять секунд»;
Снова запустите следующий URL-адрес в браузере, чтобы проверить, работает ли код. Здесь электронное письмо будет отправлено через пять секунд с использованием метода delay () за пять секунд.
http: // локальный: 8000 / emailqueue
Проверьте почтовый ящик адреса электронной почты получателя, чтобы узнать, было ли получено новое письмо через 5 секунд. Если задание в очереди работает правильно, будет получено электронное письмо со следующим содержанием.
Заключение
В этом руководстве показано очень простое использование очереди Laravel. Вы можете использовать очереди Laravel для различных целей в зависимости от требований вашего приложения. Я надеюсь, что это руководство помогло читателям лучше понять основные концепции очередей Laravel.