> На сегодняшний день PHP ещё неидеально подходит для создания постоянно работающих демонов. Есть проблемы с утечкой памяти. Ситуация улучшается с новыми версиями, но пока совсем не исправилась. Поэтому воркер может забирать всё больше и больше памяти, пока не исчерпает всю доступную. Да ладно, всё у PHP нормально со сборкой мусора уже лет 10 как. Проблема в программистах на PHP, которые привыкли, что он "умирает" (что, кстати, весьма практично, но на Rails, например, такой код уже не прокатит). И в Laravel (как следствие из первого). На форуме ((https://laravel.ru/forum/viewtopic.php?id=4447 недавно всплывал подобный вопрос)). > Стандартно проблему слежения за наличием демона и перезапуск его при нужных условиях обеспечивают с помощью supervisor. Та не нужон вам Supervisor, если вы не работаете в контейнере (Docker). В современных дистрибутивах (Debian, Ubuntu, CentOS, etc. etc.) идёт systemd (а вот cron - не везде), в нем это решается на раз-два: **artisan-queue.service** %%(conf) [Install] WantedBy=multi-user.target [Service] ExecStart=/usr/bin/php /path-to-your-project/artisan schedule:run Restart=always User=www-data WorkingDirectory=/path-to-your-project %% %%(sh) cp artisan-queue.service /etc/systemd/system/ systemctl enable artisan-queue systemctl start artisan-queue %% Что получаем: - запуск действительно без зависимостей и сравнительная кросс-дистрибутивность (даже в Docker можно systemd запустить) - логгирование в общий системный лог из коробки (который можно тянуть на другую систему, фильтровать/объединять/бекапить и прочее) - стандартные средства управления и мониторинга (systemctl) - автоматический перезапуск - плюшки безопасности (в моем примере не показано, но легко настраивается Chroot и прочее) - к сервису легко навешивается таймер (%%(t)artisan-queue.timer%%), делая его полным аналогом cron Всем хоть немного сисадминам просто жизненно необходимо освоить systemd, это после зоопарка других init просто манна небесная. > %%(sh)php artisan schedule:run >> /dev/null 2>&1%% Для справки: вместо двух длинных перенаправлений достаточно написать: %%(sh) php artisan schedule:run &>/dev/null %%