🫒

Laravel11 queueコマンド

2024/12/19に公開

この記事は 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形式で出力できます
GitHubで編集を提案

Discussion