だから私はスーパーバイザーをインストールしました、そしてそれは動いているようです。キューワーカーの構成ファイルを/etc/supervisor/conf.d/laravel-worker.confに配置しました
そしてそれはこのように見えます
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html queue:work database --sleep=3 --tries=2 --daemon
autostart=true
autorestart=true
numprocs=4
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/laravel.log
そして私のsupervisord.confはこのように見えます
[unix_http_server]
file=/var/run/supervisor.sock ; (the path to the socket file)
chmod=0775 ; sockef file mode (default 0700)
chown=root
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor/conf.d/*.conf
プロセスを開始しようとすると、エラー-ERROR(スポーンエラー)が発生します。
ログファイルを見ると、次のように表示されます-
2017-05-28 22:21:20,697 INFO exited: laravel-worker_01 (exit status 0; not expected)
2017-05-28 22:21:20,702 INFO exited: laravel-worker_00 (exit status 0; not expected)
2017-05-28 22:21:20,704 INFO exited: laravel-worker_02 (exit status 0; not expected)
2017-05-28 22:21:20,706 INFO exited: laravel-worker_03 (exit status 0; not expected)
2017-05-28 22:21:23,711 INFO spawned: 'laravel-worker_00' with pid 16280
2017-05-28 22:21:23,713 INFO spawned: 'laravel-worker_01' with pid 16281
2017-05-28 22:21:23,715 INFO spawned: 'laravel-worker_02' with pid 16282
2017-05-28 22:21:23,719 INFO spawned: 'laravel-worker_03' with pid 16283
2017-05-28 22:21:23,772 INFO exited: laravel-worker_02 (exit status 0; not expected)
2017-05-28 22:21:23,774 INFO gave up: laravel-worker_02 entered FATAL state, too many start retries too quickly
2017-05-28 22:21:23,774 INFO exited: laravel-worker_01 (exit status 0; not expected)
2017-05-28 22:21:23,776 INFO gave up: laravel-worker_01 entered FATAL state, too many start retries too quickly
2017-05-28 22:21:23,776 INFO exited: laravel-worker_03 (exit status 0; not expected)
2017-05-28 22:21:23,777 INFO gave up: laravel-worker_03 entered FATAL state, too many start retries too quickly
2017-05-28 22:21:23,777 INFO exited: laravel-worker_00 (exit status 0; not expected)
2017-05-28 22:21:24,778 INFO gave up: laravel-worker_00 entered FATAL state, too many start retries too quickly
設定ファイル内のすべてのファイルが存在することを確認しました。 laravel-worker.confで正しい構成を使用しているかどうかわかりません。ドキュメントやその他のstackoverflowスレッドを検索しましたが、解決策が見つかりませんでした
したがって、問題は明らかに私のlaravel-workerにあり、パスに「/ artisan」を追加してコマンドパスを完成させる必要がありました-
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work database --sleep=3 --tries=2 --daemon
スーパーバイザーを再起動して解決しました
Sudo service supervisor reload
キュー名を適切に指定した後、私も直面していた同じ問題が解決されました
command=php /home/vagrant/code/prject1/artisan queue:work redis --queue=email --sleep=3 --tries=1 --daemon
これが私のワーカーファイルです laravel-worker.conf
ログファイルを見ると、発生したエラーの種類を確認できますstdout_logfile=/var/www/html/storage/logs/laravel.log
あなたはあなたのconfに職人を追加し、あなたのconfファイルにユーザーを追加する必要があります
例えば
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/site.com/kernel/artisan queue:work --sleep=3 --
tries=3
autostart=true
autorestart=true
user=root
numprocs=10
redirect_stderr=true
stdout_logfile=/home/site.com/kernel/worker.log