Я хочу создать очередь для отправки писем в 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 минут, избегая постоянного использования памяти и процессора.
Каков наилучший подход?
Не уверен, какую версию Laravel вы используете, но я подозреваю, что это 5.2 или более ранняя версия.
Вам не нужно запускать это каждую минуту, он продолжает работать, пока не будет остановлен вручную.
Из документации Laravel 5.2:
Обратите внимание, что после запуска этой задачи она будет продолжаться до тех пор, пока не будет остановлена вручную. Вы можете использовать монитор процесса, такой как Supervisor, чтобы гарантировать, что слушатель очереди не перестанет работать.
Так что, возможно, вы хотите посмотреть в Руководитель
Кроме того, если это вообще полезно, вы можете подключиться к $ schedule, -> everyFiveMinutes (). Есть также несколько других доступных методов. Планирование Laravel
Других решений пока нет …