Передумови
Перш ніж розпочати цей підручник, спочатку виконайте такі завдання:
- Встановіть новий проект Laravel
- Налаштуйте підключення до бази даних
- Налаштування конфігурації для надсилання електронних листів (Ви можете перевірити підручник з надсилання електронної пошти для надсилання електронної пошти за допомогою 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: контролер SendEmailControllerSendEmailController.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.