【问题标题】:Queuing email in Laravel 4 with sync driver使用同步驱动程序在 Laravel 4 中排队电子邮件
【发布时间】:2014-01-29 15:55:37
【问题描述】:

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

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)。有人可以帮我弄清楚为什么我在排队时回复这么慢吗?

【问题讨论】:

    标签: php email laravel-4 queue


    【解决方案1】:

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

    【讨论】:

    • 好的,有道理。我只是假设这是 Symfony2 的“电子邮件假脱机”功能......
    • 同步驱动比这更简单,你必须使用不同的驱动:)
    • 您可以根据需要在开发时使用邮件配置文件中的pretend 功能。除此之外,您将需要更改队列驱动程序以获得正确的队列。
    • 好的,我要去看看 Beanstalkd。谢谢!
    • 那么它是在后台运行还是像普通脚本一样同步?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 2015-12-23
    • 2018-11-30
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    相关资源
    最近更新 更多