2017-02-21 5 views
0

Я подключил Redis с Laravel для очередей электронной почты, и все в порядке ... но в среде разработчиков я использую mailtrap.io (бесплатная версия).Slow down Laravel worker

И проблема в том, что mailtrap позволяет получить только 2 писем в секунду, так что я никогда не получить все сообщения электронной почты, которые находятся в очереди, потому что Redis отправляет сообщения электронной почты, как сумасшедший ... может быть 10 в/с

Есть ли способ каким-то образом замедлить работу очереди, чтобы он отправлял максимум 2 письма в секунду?

+1

Возможно, что-то вроде 'Mail :: getSwiftMailer() -> registerPlugin (new \ 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 изменить количество Emai ls per second