2017-02-21 79 views
0

我已经联系Redis与Laravel排队电子邮件,一切都很好......但在开发环境中,我使用mailtrap.io(免费版)。减慢Laravel工作人员

而问题是,mailtrap允许接收每秒只有2个电子邮件,所以我从来没有得到所有排队的电子邮件,因为Redis的发送电子邮件,像疯了似的......也许10元/ s的

有没有以某种方式减慢队列速度,以便每秒发送最多2封邮件?

+1

LS也许像'的Mail :: getSwiftMailer() - > registerPlugin(新\ Swift_Plugins_AntiFloodPlugin(2,1));'的第一个参数是最大数量的电子邮件到每个连接发送,第二个参数是等待时间,以秒为单位,在连接之间。如需更多帮助[请检查此](http://www.camroncade.com/limit-the-number-of-messages-sent-on-one-smtp-connection-laravel-5/) – KuKeC

+0

我正在使用Laravel - 通知发送邮件... – lewis4u

+0

你能帮我一下,在哪里调用这个插件? – lewis4u

回答

1

是的,它是一个解决方案,他们是所谓的工作:) 您可以创建一个文件专门发送邮件的作业文件夹和一类这样的

class SendPushNotification extends Job implements ShouldQueue 
{ 
    use InteractsWithQueue, SerializesModels; 

    protected $pushNotification; 

    /** 
    * Create a new job instance. 
    * 
    * @return void 
    */ 
    public function __construct(PushNotification $pushNotification) 
    { 
     $this->pushNotification = $pushNotification; 
    } 

    /** 
    * Execute the job. 
    * 
    * @return void 
    */ 
    public function handle() 
    { 
     $this->pushNotification->send(); 
    } 
} 

,然后调用类的控制器

$this->dispatch(new SendPushNotification($pushNotification))->delay(1);

延迟是你可以创建一个构造器阵列秒收到两封电子邮件Ø很多你想也许一些变种,可经.ENV改改鄂麦数量每秒