1

我正在使用 Iron.io 推送队列。如果我使用这样的代码,请解释附件会发生什么:

Mail::queue( 'email', array('body' => 'msg body here'), function($message) {
    $message
        ->to('email@gmail.com')
        ->subject('Subject')
        ->attach(storage_path() . '/file.mp4' );
});

如果文件很小(< 100 KB),那么对这样一个页面的请求似乎真的很快。如果文件是 5MB 左右,那么请求需要几秒钟。因此它看起来像 Laravel 序列化附件,将它们发送到 Iron 服务器,然后 Iron 将其发送回我的服务器,然后最终发送电子邮件。真的吗?

这不是我对队列的期望。我希望立即响应用户。我完全确定同步驱动程序已关闭并且应用程序使用 Iron,因为我在 Iron.io 仪表板中看到消息。

顺便说一句,我正在使用 ngrok Tunelling 来处理本地开发机器上的队列。也许这就是原因?

4

1 回答 1

0

我不确定 Mail::queue 是否会发送到 IronMQ,但如果确实如此,我认为您希望将其设置为不随正文一起发送的方式。

不是排队邮件,而是排队电子邮件的元数据,例如:

Queue::push(new SendEmail($message, $filepath));

然后当推送返回到您的应用程序时,SendMail 可以调用同步发送邮件:

Mail::send( 'email', array('body' => 'msg body here'), function($message) {
    $message
        ->to('email@gmail.com')
        ->subject('Subject')
        ->attach(storage_path() . $filepath );
});

我不是一个 PHP 人,所以代码可能有点偏离,但它应该传达这个想法。

于 2015-06-23T17:12:10.960 回答