Предпоставки
Преди да започнете този урок, първо изпълнете следните задачи:
- Инсталирайте нов проект на 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 ('reserve_at') -> nullable ();
$ table-> unsignedInteger ('available_at');
$ table-> unsignedInteger ('created_at');
);
/ **
* Обратни миграции.
*
* @return void
* /
публична функция надолу ()
Schema :: dropIfExists ('работни места');
Изпълнете следната команда от терминала, за да създадете работа маса.
$ php занаятчия мигрираСъздаване на пощенски клас
Трябва да създадете наличен клас, за да изпращате имейли от приложението Laravel. Изпълнете следната команда, за да създадете имейл клас с име Изпратете имейл в местоположението приложение / поща.
$ php artisan make: поща SendEmailСъдържанието на този клас е показано по-долу. Името на изгледа на файла, което се използва в изграждане () метод ще бъде създаден в следващата част на този урок.
пространство от имена App \ Mail;използвайте Illuminate \ Bus \ Queueable;
използвайте Illuminate \ Contracts \ Queue \ ShouldQueue;
използвайте Illuminate \ Mail \ Mailable;
използвайте Illuminate \ Queue \ SerializesModels;
клас SendEmail разширява Достъпен
използвайте Queueable, SerializesModels;
/ **
* Създайте нов екземпляр на съобщение.
*
* @return void
* /
публична функция __construct ()
//
/ **
* Изградете съобщението.
*
* @ върни $ това
* /
изграждане на публична функция ()
/ * Определете името на изгледа, който ще се използва за шаблон за имейл * /
върнете $ this-> view ('имейл');
Създаване на изглед
Създайте файла с име на име електронна поща.острие.php със следното съдържание, което ще бъде изпратено като тяло на имейла.
Добре дошли в Linux Hint
Научете 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 void
* /
манипулатор на публична функция ()
/ * Създайте обекта на достъпния клас и изпратете имейл * /
$ имейл = нов SendEmail ();
/ * Задайте валиден имейл адрес * /
Mail :: to ('Receiver Email Address') -> изпращане ($ имейл);
Създаване на контролер
Изпълнете следната команда, за да създадете контролер за обработка на опашката. Когато 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 ('имейл', '[имейл защитен]');Изпълнете следния 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.