Что-то странное у меня творится.
У меня есть задача для Laravel-очереди, написанная в виде PHP-класса, как положенно. Внутри этой задачи вызывается Shell-скрипт. Задачи хранятся в MariaDB.
И по логам я вижу, что этот Shell-скрипт все время запускается, причем с определенными параметрами.
Его никто кроме Laravel-очереди запускать не может. Но я смотрю в таблицу jobs и в таблицу failed_jobs - там пусто, ни одной записи. И я не могу понять, почему эта задача отправляется на выполнение. Я уничтожаю процесс этого скрипта, но он снова появляется. Его однозначно запускает Laravel-очередь.
В файле /etc/supervisor/conf.d/laravel-worker.conf у меня прописана команда:
command=php /var/www/mysite/artisan queue:work --sleep=3 --tries=3
То есть, бесконечно задача запускаться не должна (максимум 3 раза). Но она реально запускается бесконечно.
Я не пойму, где эта задача хранится? Почему она перезапускается бесконечно? Ее перезапускает сам supervisor, или тупит artisan queue:work, все время генеря новую задачу при старте через supervisor? Где это можно посмотреть?
UPD1: Сейчас проделал такой экспериент. Сначала остановил supervisor:
supervisorctl stop laravel-worker:*
Затем удалил процесс проблемного скрипта, и запустил вручную команду обработки очереди:
command=php /var/www/mysite/artisan queue:work --sleep=3 --tries=3
В результате проблемный скрипт НЕ запустился.
Получается, что его бесконечно запускал именно supervisor. Но в supervisor ведь прописана только команда «php /var/www/mysite/artisan queue:work --sleep=3 --tries=3», то есть скрипт не может запуститься сам, ему нужно чтобы сработало задание очереди!
Вот и непонятно, почему при ручном поллинге очереди скрипт не выполняется, а supervisor его каким-то волшебным образом все время ухитряется запускать?
UPD2: В логе /var/log/supervisor/supervisord.log за период, когда бесконечно запускался проблемный скрипт, нет ничего, ни одной записи.