これについて正しい情報を提供するのは難しい。何日もそれを続けてきました。Vagrantでプッシャーがうまく機能しています。基本的な Horizon 構成で立ち上げます (prod/local は関係ありません)。
'production' => [
'supervisor-1' => [
'connection' => 'redis',
'queue' => [
env('DEFAULT_QUEUE', 'default'),
env('COMMENT_EVENT_QUEUE', 'comms')
],
'balance' => 'auto',
'processes' => 10,
'tries' => 3,
],
これらはすべてLaravel の Stancl Tenancyの背後にあります。そして、それはすべて正常に機能します。私はプロダクションボックスでまったく同じシステムを立ち上げました。それもうまくいきます。
私は今、ロードバランサーとSSLを上に置いて物事を複雑にするビジネスに同じものをインストールしました。したがって、私のボックスは、ラスト マイルで http トラフィックのみを認識します。私\URL::forceScheme('https');
は起動時にすべてをうまく機能させるために使用しています。
この conf ファイルを使用して、Supervisor から Horizon を起動します。
[program:horizon]
process_name=%(program_name)s
startsecs=0
command=php /var/www/er2/artisan horizon
user=www-data
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/www/er2/storage/logs/horizon.log
stopwaitsecs=3600
問題:
スーパーバイザ経由で Horizon (または queue:work) を実行すると、次のエラーでプッシャー メッセージを送信できません。
{"例外":"[オブジェクト] (Illuminate\Broadcasting\BroadcastException(コード: 0): at /var/www/crisis/vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php:121)
キッカーは次のとおりです。コマンド ラインから Horizon (または queue:work) を起動すると、動作します。 失敗するのは、Supervisor で起動したときだけです。
誰がどこから始めるべきか考えがありますか?
私が試したこと:
- Supervisor でのユーザーの変更 -- それでも失敗する
- Supervisor を変更してキューを開始 -- それでも失敗する
- コマンドラインでルートに変更 -- まだ動作
- ワーカーの変更 -- スーパーバイザーの場合はまだ失敗します
- たくさんありますが、何も違いはありません。
ベンダーファイル全体に変数をダンプすると、私が見つけることができる唯一の違いは次のとおりです。
スーパーバイザーあり (失敗):
RESPONSE --> {"body":false,"status":0}
コマンドラインで (成功):
RESPONSE --> {"body":"{}","status":200}
Horizon をスーパーバイザーから起動した場合とコマンド ラインから起動した場合の Pusher の違いを絞り込むことはできません。何かご意見は?