发送群发邮件 - 超时异常

时间:2014-10-30 20:08:21

标签: laravel-4 queue

我试图发送多个带队列的电子邮件(beanstalkd)。我的应用程序发送了一些电子邮件,然后我收到超时异常。

    foreach ($emails as $e) {
        Mail::queue('emails.invite', ["username" => Auth::user()->username, "grupa" => $naziv, "id" => $id, "email" => $e], function($message) use ($e){        
            $message->to($e)->subject("Pridruži nam se!");
        });
    }

是否有办法将所有电子邮件放入队列,因此当系统可用时,应发送电子邮件。

编辑:超时异常的完整消息:

{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Maximum execution time of 30 seconds exceeded","file":"\/home\/forge\/default\/vendor\/nikic\/php-parser\/lib\/PHPParser\/NodeAbstract.php","line":110}}

1 个答案:

答案 0 :(得分:1)

你好吗?如果您正在使用beanstalk(或任何队列),那么您正在从应用程序(生产者,发送到队列)以及从队列中消耗数据并发送电子邮件的工作进程执行操作。

制作人只是将电子邮件放入beanstalk,这很容易......

消费者应该是一个长时间运行的进程,它应该从cli执行,没有最大时间执行(你必须调整php-cli的php.ini)。在循环中,您应该检查队列中是否有新内容并发送电子邮件。

基本上,听起来像你的问题是消费者部分设置了最大的执行时间,所以它不能在X秒后的while循环中消耗电子邮件。调整并确保没有限制。