我只想在用户注册时排队电子邮件。因此,当用户发布注册表单时,我会这样做:
Mail::queue('emails.activate', $data, function($message) use ($user)
{
$message->from('no-reply@mysite.com', 'Mysite.com');
$message->to($user->email, $user->username)->subject('Welcome');
});
队列侦听器正在运行(php artisan queue:listen),并且一个管理程序进程确保它会在停止时重新启动。
它有效,用户收到电子邮件但注册时的HTTP响应非常慢,正如我想要的那样,如果我试图直接发送电子邮件。如果我评论上面的所有排队代码,HTTP响应时间就可以了。
我在queue.app中使用同步驱动程序:
'default' => 'sync',
'connections' => array(
'sync' => array(
'driver' => 'sync',
),
etc...
最后,我使用postfix运行自己的私有服务器(Ubuntu)。有人可以帮我弄清楚为什么我在排队电子邮件时反应如此缓慢?
答案 0 :(得分:9)
同步驱动程序在Laravel结束执行之前运行其排队的作业。这就是为什么它被称为同步驱动程序,您需要更改它以实现所需的功能。