Laravel11 queueコマンド
この記事は Laravel11にあるArtisanコマンドを全部調べる Advent Calendar 2024 19日目の記事です。
今回はqueueコマンドについて調べました。
環境
- PHP 8.4.1
- laravel/laravel 11.3.3
- laravel/framework 11.33.2
queue:clear
指定されたキューからすべてのジョブを削除する。
php artisan queue:clear
実行するとデフォルトの接続先のデフォルトのキューからすべてのジョブを削除します。
本番環境(.envのAPP_ENVがproduction)で実行すると実行確認のメッセージが表示します。
Yesを選択することでジョブの削除が実行します。
引数 | 説明 |
---|---|
connection |
クリアするキューの接続先を指定 |
- config/queue.phpのconnections配列に書かれている接続先を指定できます
php artisan queue:clear redis
オプション | 説明 |
---|---|
--queue[=QUEUE] |
クリアするキュー名を指定 |
--force |
本番環境で強制的に実行 |
-
--queue
を使ってキュー名を指定できます - 本番環境で
--force
を付けると実行確認を行わないで強制的に実行します
queue:failed
すべての失敗したジョブを表示する。
php artisan queue:failed
実行するとすべての失敗したジョブの一覧を表示します。
queue:flush
すべての失敗したジョブを削除する。
php artisan queue:flush
実行するとすべての失敗したジョブを削除します。
オプション | 説明 |
---|---|
--hours[=HOURS] |
失敗したジョブを削除する時間を指定 |
-
--hours
を使って現在時間より何時間前のジョブを削除できます
つぎの場合は現在時間より2時間前の失敗したジョブを削除します
php artisan queue:flush --hours=2
queue:forget
失敗したジョブを削除する。
php artisan queue:forget ID
実行すると指定したIDの失敗したジョブを削除します。
引数 | 説明 |
---|---|
id |
失敗したジョブのIDを指定 |
- 削除するID(failed_jobs.uuid)を指定します ※ IDは必須です
queue:listen
キューに溜まっているジョブを実行する。
php artisan queue:listen
実行するとqueue:workコマンドを使ってキューに溜まっているジョブを実行します。
メンテナンスモードではジョブは実行できないです。
引数 | 説明 |
---|---|
connection |
接続先を指定 |
- config/queue.phpのconnections配列に書かれている接続先を指定できます
未指定の場合はデフォルトの接続先でコマンドが実行されます
オプション | 説明 |
---|---|
--name[=NAME] |
ワーカ名を指定 |
--delay[=DELAY] |
例外が発生したジョブの再試行までの待機する秒数を指定(非推奨) |
--backoff[=BACKOFF] |
例外が発生したジョブの再試行までの待機する秒数を指定 |
--force |
メンテナンスモードでも実行 |
--memory[=MEMORY] |
メモリの制限(メガバイト単位) |
--queue[=QUEUE] |
キュー名を指定 |
--sleep[=SLEEP] |
スリープする秒数を指定 |
--rest[=REST] |
ジョブとジョブとの間の待つ秒数を指定 |
--timeout[=TIMEOUT] |
ジョブが実行できる秒数を指定 |
--tries[=TRIES] |
ジョブの最大再試行回数を指定 |
-
--name
を使ってワーカ名を指定できます
未指定の場合はデフォルトのdefaultが指定されます -
--delay
、--backoff
を使って例外が発生した時のジョブの再試行までの待機する秒数を指定できます
未指定の場合はデフォルトが0秒なのですぐに再試行します -
--force
を使うとメンテナンスモード中でもジョブを実行できます -
--memory
を使うとメモリの制限できます
未指定の場合はデフォルトの128メガバイトが指定されます -
--queue
を使ってキュー名を指定できます -
--sleep
を使うと実行するジョブがない時に待機する秒数が指定できます
未指定の場合はデフォルトの3秒が指定されます -
--rest
を使うと1つのジョブを実行後、次のジョブを動かすまでの待機する秒数が指定できます
未指定の場合はデフォルトの0秒なので待機することなく動き続けます -
--timeout
を使うとジョブのタイムアウトまでの秒数を指定できます
未指定の場合はデフォルトの60秒が指定されます -
--tries
を使うとジョブの最大試行回数を指定できます
未指定の場合はデフォルトの1が指定されます ※ 1回だけ実行です
queue:monitor
指定したキューのジョブ数を監視する。
php artisan queue:monitor
実行すると指定したキュー名のジョブ数を監視します。
特定のジョブ数を超えた場合は通知できます。
引数 | 説明 |
---|---|
queues |
キュー名を指定 |
- 監視するキュー名を指定します ※ キュー名は必須です
オプション | 説明 |
---|---|
--max[=MAX] |
ジョブの最大数を指定 |
-
--max
を使ってジョブの最大数を指定できます
未指定の場合はデフォルトの1000が指定されます
queue:prune-batches
バッチ処理の古いデータを削除する。
php artisan queue:prune-batches
実行すると処理完了してから24時間以上経過しているバッチデータを削除します。
オプション | 説明 |
---|---|
--hours[=HOURS] |
バッチデータを保持する時間を指定 |
--unfinished[=UNFINISHED] |
未完了のバッチデータを保持する時間を指定 |
--cancelled[=CANCELLED] |
キャンセルされたバッチデータを保持する時間を指定 |
-
--hours
を使うと保持する時間を指定できます
未指定の場合はデフォルトの24時間が指定されます -
--unfinished
を使うと未完了のバッチデータを保持する時間を指定できます
つぎのように書くとバッチデータを作成後、72時間以上経過している未完了のバッチデータを削除します
php artisan queue:prune-batches --unfinished=72
-
--cancelled
を使うとキャンセルのバッチデータを保持する時間を指定できます
つぎのように書くとバッチデータを作成後、72時間以上経過しているキャンセルしているバッチデータを削除します
php artisan queue:prune-batches --cancelled=72
queue:prune-failed
失敗した古いジョブを削除する。
php artisan queue:prune-failed
実行すると失敗してから24時間以上経過しているジョブを削除します。
オプション | 説明 |
---|---|
--hours[=HOURS] |
失敗したジョブを保持する時間を指定 |
-
--hours
を使うと保持する時間を指定できます
未指定の場合はデフォルトの24時間が指定されます
queue:restart
キューワーカを再起動する。
php artisan queue:restart
実行すると現在の動いているジョブの終了後にキューワーカを再起動します。
これはキューワーカは長期間プロセスであるため、再起動しない限りコードの変更があっても反映しないので、安全に最新のコードを反映するために必要なコマンドです。
queue:retry
失敗したジョブの再試行する。
php artisan queue:retry id
実行すると指定したIDのジョブを再試行します。
引数 | 説明 |
---|---|
id |
失敗したジョブのIDを指定 |
- IDは複数指定できます
php artisan queue:retry a1 a2
- 失敗したすべてのジョブを再試行する場合はallを使います
php artisan queue:retry all
オプション | 説明 |
---|---|
--queue[=QUEUE] |
キュー名を指定 |
--range[=RANGE] |
再試行するジョブのIDの範囲を指定 |
-
--queue
を使って指定したキューの失敗したジョブをすべて再試行できます -
--range
を使えば失敗したジョブのIDを範囲指定できます
php artisan queue:retry --range=1-5
queue:retry-batch
バッチ処理で失敗したジョブを再試行する。
php artisan retry-batch id
実行すると指定したバッチのIDの失敗したすべてのジョブを再試行します。
引数 | 説明 |
---|---|
id |
バッチのUUIDを指定 |
- IDは複数指定できます
php artisan queue:retry-batch a1 a2
オプション | 説明 |
---|---|
--isolated[=ISOLATED] |
コマンドの排他実行 |
-
--isolated
をを付けるとコマンドの排他制御が可能になります
queue:work
キューワーカを起動する。
php artisan work
実行するとキューワーカを起動し、キューに登録されたジョブを順番に処理します。
引数 | 説明 |
---|---|
connection |
接続先を指定 |
- config/queue.phpのconnections配列に書かれている接続先を指定できます
未指定の場合はデフォルトの接続先でコマンドが実行されます
オプション | 説明 |
---|---|
--name[=NAME] |
ワーカ名を指定 |
--queue[=QUEUE] |
キュー名を指定 |
--daemon |
ワーカをデーモンモードで実行(非推奨) |
--once |
1つのジョブだけ実行 |
--stop-when-empty |
キューが空になると停止 |
--delay[=DELAY] |
例外が発生したジョブの再試行までの待機する秒数を指定(非推奨) |
--backoff[=BACKOFF] |
例外が発生したジョブの再試行までの待機する秒数を指定 |
--max-jobs[=MAX-JOBS] |
停止するまでの処理するジョブ数を指定 |
--max-time[=MAX-TIME] |
キューワーカの実行する最大秒数を指定 |
--force |
メンテナンスモードでも実行 |
--memory[=MEMORY] |
メモリの制限(メガバイト単位) |
--sleep[=SLEEP] |
スリープする秒数を指定 |
--rest[=REST] |
ジョブとジョブとの間の待つ秒数を指定 |
--timeout[=TIMEOUT] |
ジョブが実行できる秒数を指定 |
--tries[=TRIES] |
ジョブの最大再試行回数を指定 |
--json |
キューワーカの情報をJSON形式で出力 |
-
--name
を使ってワーカ名を指定できます
未指定の場合はデフォルトのdefaultが指定されます -
--queue
を使ってキュー名を指定できます -
--once
を使うと1つのジョブのみ実行できます
実行後はキューワーカは終了します -
--stop-when-empty
を使うと処理するジョブがなくなるとキューワーカは終了します -
--delay
、--backoff
を使って例外が発生した時のジョブの再試行までの待機する秒数を指定できます
未指定の場合はデフォルトが0秒なのですぐに再試行します -
--max-jobs
を使って処理するジョブ数を指定できます
指定したジョブ数の処理が終わるとキューワーカは終了します -
--max-time
を使ってキューワーカが起動している秒数を指定できます
指定した秒数を過ぎるとキューワーカは終了します -
--force
を使うとメンテナンスモード中でもジョブを実行できます -
--memory
を使うとメモリの制限できます
未指定の場合はデフォルトの128メガバイトが指定されます -
--sleep
を使うと実行するジョブがない時に待機する秒数が指定できます
未指定の場合はデフォルトの3秒が指定されます -
--rest
を使うと1つのジョブを実行後、次のジョブを動かすまでの待機する秒数が指定できます
未指定の場合はデフォルトの0秒なので待機することなく動き続けます -
--timeout
を使うとジョブのタイムアウトまでの秒数を指定できます
未指定の場合はデフォルトの60秒が指定されます -
--tries
を使うとジョブの最大試行回数を指定できます
未指定の場合はデフォルトの1が指定されます ※ 1回だけ実行です -
--json
を付けるとキューワーカの情報をJSON形式で出力できます
Discussion