使用同步驱动程序在Laravel 4中排队电子邮件

时间:2014-01-10 15:39:01

标签: php email laravel-4 queue

我只想在用户注册时排队电子邮件。因此,当用户发布注册表单时,我会这样做:

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)。有人可以帮我弄清楚为什么我在排队电子邮件时反应如此缓慢?

1 个答案:

答案 0 :(得分:9)

同步驱动程序在Laravel结束执行之前运行其排队的作业。这就是为什么它被称为同步驱动程序,您需要更改它以实现所需的功能。