Самый эффективный способ реализации почтовой очереди в Laravel

Я хочу создать очередь для отправки писем в Laravel. У меня очередь работает нормально, но я беспокоюсь об эффективности. Это мои настройки:

Я создал таблицу заданий и настроил файл .env, чтобы использовать очереди с моей локальной базой данных.

Я установил этот crontab на сервере:

* * * * * php /var/www/imagine.dev/artisan schedule:run >> /dev/null 2>&1

И я настроил расписание в app \ Conosle \ Kernel.php, поэтому мне не нужно каждый раз вручную вводить «очередь: слушать» через консоль.

$schedule->command('queue:listen');

Теперь на мой вопрос. Я хотел бы знать, если это эффективно? Меня беспокоит наличие очереди: слушайте, бегая все время в фоновом режиме, потребляя процессор и память.

Я пытался запустить только очередь: слушать каждые 5 минут, а затем положить его в сон

$schedule->command('queue:listen --sleep 300');

но опять же, я не уверен, что это лучший подход.

Еще одна вещь, которую я пробовал — использовать «очередь: работа», но она обрабатывает только одну очередь за раз.

В идеале мне бы хотелось, чтобы все очереди обрабатывались каждые 5 минут, избегая постоянного использования памяти и процессора.

Каков наилучший подход?

0

Решение

Не уверен, какую версию Laravel вы используете, но я подозреваю, что это 5.2 или более ранняя версия.
Вам не нужно запускать это каждую минуту, он продолжает работать, пока не будет остановлен вручную.

Из документации Laravel 5.2:

Обратите внимание, что после запуска этой задачи она будет продолжаться до тех пор, пока не будет остановлена ​​вручную. Вы можете использовать монитор процесса, такой как Supervisor, чтобы гарантировать, что слушатель очереди не перестанет работать.

Так что, возможно, вы хотите посмотреть в Руководитель

Кроме того, если это вообще полезно, вы можете подключиться к $ schedule, -> everyFiveMinutes (). Есть также несколько других доступных методов. Планирование Laravel

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]