主管程序过早退出(进程日志可能含有详细信息)。

13

我有时在Laravel中使用Supervisor,有时它能正常工作,但有时会出现错误。 FATAL Exited too quickly (process log may have details).

这是我的Supervisor文件。

[program:laravel-worker-mail]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/new-project/artisan queue:work mongodb --sleep=10 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/html/new-project//storage/logs/worker.log
请建议我,如果有人对此有好主意。
5个回答

44

在我的情况下,主进程退出得非常快,因为它在开始秒数之前就完成了,而由于没有定义开始秒数,它使用的默认值是1。

设置 startsecs=0 解决了我的问题。


1
这对我有用。谢谢! - HalesEnchanted
1
这对我也起作用了。 - anilwanted
我很高兴它能帮到你。点个赞也会帮助其他人的。 - nacojohn
你在哪里运行这个程序? - KD.S.T.
1
@ichimaru,在Ubuntu上,您的supervisor配置文件通常位于/etc/supervisor/conf.d/YourSupervisor.conf - Sellers
太棒了!当我遇到困难时,这个技巧真的起作用了! - Elijah Cruz Webservices

6

我通过搜索和尝试多种方法解决了这个问题,最终在命令中添加了--daemon得到了解决方案。 下面是更新后的代码:

[program:laravel-worker-mail]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/new-project/artisan queue:work mongodb --sleep=10 --tries=3 --daemon
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/html/new-project/storage/logs/worker.log

2
在 Laravel 5.4 中,--daemon 已被弃用了,这是什么意思? - Muhammad Usama Mashkoor
是的,--daemon现在已经被弃用了,所以不会有任何效果。 - mFlorin

3
对于那些尽管遵循接受的答案仍然存在相同问题的人,事实证明我引用了错误的队列方法“sqs”,而不是我正在使用的“database”方法。
命令=php /var/www/html/new-project/artisan queue:work database --sleep=10 --tries=3 --daemon
[program:laravel-worker-mail]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/new-project/artisan queue:work database --sleep=10 --tries=3 --daemon
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/html/new-project/storage/logs/worker.log

0
当我尝试在一个实际上没有可用的 "artisan" 的目录中运行 "php artisan horizon" 时,我也收到了这个消息。

0

我觉得发这篇文章有点傻,但是当我为一个新网站克隆服务器时遇到了这个问题——supervisor conf文件将命令指向错误的目录,因为新网站托管在不同的位置。

所以,以我的例子来说,/etc/supervisor/conf.d/laravel-worker.conf 需要更改为类似以下内容:

[program:laravel-worker-mail]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/new-project/artisan queue:work database --sleep=10 --tries=3 --daemon
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/html/new-project/storage/logs/worker.log

变成这样:

[program:laravel-worker-mail]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/new-project-2/artisan queue:work database --sleep=10 --tries=3 --daemon
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/html/new-project-2/storage/logs/worker.log

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接