Почему очередь все еще ждет, когда отправляют почту в laravel? - PullRequest
0 голосов
/ 13 сентября 2018

я хочу отправить почту в очередь и не ждать при отправке почты 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.

1 Ответ

0 голосов
/ 14 сентября 2018

Моя проблема исправлена ​​изменением QUEUE_CONNECTION=sync на QUEUE_CONNECTION=database в .env файле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...