я хочу отправить почту в очередь и не ждать при отправке почты https://laravel.com/docs/5.7/queues#connections-vs-queues
я запускаю команду для создания таблицы jobs
:
php artisan queue:table
php artisan migrate
Я создаю задание для отправкиmail: php artisan make:job SendEmailJob
и код редактирования:
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Mail;
class SendEmailJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public $body;
public $emailto;
public function __construct($body,$email)
{
//
$this->body=$body;
$this->emailto=$email;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$email=$this->emailto;
Mail::send("body_email.confirm_order",['Body'=> $this->body], function($message) use ($email)
{
$message->from(env('MAIL_USERNAME'),"Eye glasses");
$message->subject("Confirm Email");
$message->to($email);
});
}
}
Я вызываю очередь из контроллера:
use App\Jobs\SendEmailJob;
public function index()
{
$Body="test";
$email="daitb@vnitsolutions.com";
SendEmailJob::dispatch($Body, $email);
$calendars= AppointmentModel::GetAppointmentofDoctor($id,$datetime);
return view('frontend.appointment',["calendars"=>$calendars]);
}
добавляем QUEUE_DRIVER=database
в файл .env
команда запуска:
php artisan queue:work
Если я запускаю контроллер, процесс все еще ожидает завершения отправки почты и запускает другой процесс.я пытаюсь изменить на:
SendEmailJob::dispatch($Body, $email)->delay(now()->addMinutes(3));
Это не задержка, это все еще отправляет почту после 5 с.
Почему очередь все еще ждет, когда отправка почты в laravel?Я использовал win 32.