代码之家  ›  专栏  ›  技术社区  ›  D T

为什么在laravel发送邮件时仍要排队等待?

  •  0
  • D T  · 技术社区  · 6 年前

    https://laravel.com/docs/5.7/queues#connections-vs-queues

    jobs :

    php artisan queue:table    
    php artisan migrate
    

    我创建了一个要发送邮件的作业: 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));
    

    为什么在laravel发送邮件时仍要排队等待?

    1 回复  |  直到 6 年前
        1
  •  1
  •   D T    6 年前

    我的问题被改变解决了 QUEUE_CONNECTION=sync QUEUE_CONNECTION=database 在里面 .env