[解決済み] Laravel Queue システムをサーバー上で動作させる方法
質問
最近、Laravelのキューシステムをセットアップしました。基本は、cronjobがキューにジョブを追加するコマンドを呼び出し、メールを送信する2番目のコマンドを呼び出すことです。
私のサーバーにsshし、php artisan queue:listenを実行すると、システムは動作しますが、ターミナルを閉じるとリスナーはシャットダウンし、ジョブは積み重なり、私が再びsshしてlistenを実行するまでキューに座ったままになります。
ssh 経由で接続を開いたままにすることなく、キュー システムをバックグラウンドで実行し続けるための最良の方法は何でしょうか。
私は
php artisan queue:work --daemon
を実行してみたところ、キュー内のジョブは完了しましたが、ターミナルを閉じたときに、接続とバックグラウンド・プロセスが閉じられました。
どのように解決するのですか?
実行中
nohup php artisan queue:work --daemon &
ログアウト時にコマンドが終了するのを防ぎます。
末尾のアンパサンド(&)はバックグラウンドでプロセスを開始させるので、スクリプトが終了するまで待つ必要がなく、シェルを使い続けることができます。
参照 nohup
nohup - ハングアップしないようにコマンドを実行し、tty 以外に出力します。
これは、コマンドを実行したディレクトリにある nohup.out というファイルに情報を出力します。もし出力に興味がなければ、stdoutとstderrを/dev/nullにリダイレクトするか、同様に通常のlaravelのログに出力することが可能です。例えば
nohup php artisan queue:work --daemon > /dev/null 2>&1 &
nohup php artisan queue:work --daemon > app/storage/logs/laravel.log &
しかし、次のようなものも使用する必要があります。 Supervisord のようなものを使って、サービスが稼働し続け、クラッシュや失敗の後に再起動されることを保証する必要があります。
関連
-
[解決済み] Laravel. リレーションを持つモデルでscope()を使用する
-
[解決済み] Laravelで「キャッシュのクリアに失敗しました。適切なパーミッションがあることを確認してください"
-
[解決済み] E: パッケージ 'mysql-client' は docker compose を使った php-fpm イメージのビルドでインストール候補がない
-
[解決済み] パブリックディレクトリを取得するには?
-
[解決済み] Laravel Migrationsから特定のファイルをMigrateする
-
[解決済み] 2つのCarbon Timestampを比較するには?
-
[解決済み] LaravelではbelongsToとhasOneのどちらを使うべきですか?
-
[解決済み] Laravel Eloquentのリミットとオフセット
-
[解決済み] Laravel 多対多のリレーションシップの保存/更新
-
[解決済み] laravel Unable to prepare route ... for serialization. クロージャを使う
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Laravel Eloquent - distinct() と count() が正しく動作しない。
-
[解決済み] E: パッケージ 'mysql-client' は docker compose を使った php-fpm イメージのビルドでインストール候補がない
-
[解決済み] Laravelで非キーカラムのフィールドに明確な値を取得する方法は?
-
[解決済み] 2つのCarbon Timestampを比較するには?
-
[解決済み] Laravel Eloquent - 1つの行を取得する
-
[解決済み] LaravelのBladeテンプレートで、レイアウトに変数を渡すには?
-
[解決済み] Laravel コントローラ サブフォルダ ルーティング
-
[解決済み] コレクション要素をフェッチした後、アンセット(削除)するには?
-
[解決済み] Laravel 多対多のリレーションシップの保存/更新
-
[解決済み] laravel Unable to prepare route ... for serialization. クロージャを使う