queue:clear — キューをクリアするコマンド

artisan
  • カテゴリ:artisan
  • 掲載バージョン:Laravel 12・PHP 8.4
  • 名前空間 / FQCN / コマンドphp artisan queue:clear
  • 関連:queue:flush, queue:prune, queue:restart, queue:work, queue:listen
  • 変更履歴:Laravel 8.0 で追加、以降は非推奨・削除は無し

要点(TL;DR)

  • データベースキューの未処理ジョブを一括削除する
  • 最短コマンド:php artisan queue:clear
  • よくある落とし穴
  • データベース以外のドライバでは動作しない
  • ワーカーが走っていると競合が起きる
  • ジョブのロック情報は残る

概要

queue:clear は、Laravel の データベースキュー で未処理ジョブを全て削除します。
実務では、マイグレーション前に古いジョブをクリアしたり、デバッグでジョブを一掃したいときに使われます。
注意点としては、ワーカーが同時にジョブを取得している場合に削除されてしまう可能性がある点です。

構文 / シグネチャ

// php artisan queue:clear {connection?} {--queue=}
引数必須既定値説明
connectionstringdatabaseクリア対象のキュードライバ。データベースドライバのみサポート。
–queuestring×*クリアしたいジョブの名前(複数可)。* で全ジョブ。

戻り値void(実行結果はコンソールに出力される)

例外

  • ドライバがデータベース以外の場合は RuntimeException を投げる。
  • クリアしたジョブ数をカウントして表示。

使用例

最小例

php artisan queue:clear

実務例

# マイグレーション前に古いジョブを削除
php artisan queue:clear database

# 特定のジョブのみ削除
php artisan queue:clear database --queue=emails

よくある落とし穴・注意

  • ドライバ制限syncredis などデータベース以外のドライバでは RuntimeException が発生。
  • ワーカーの競合:ワーカーが同時にジョブを取得していると、クリア後も再取得される可能性。
  • ロック情報の残存queue:clear はジョブ行のみを削除するため、ロックテーブルに残る情報が混乱を招くことがある。

代替・関連APIとの比較

API主な用途選定基準
queue:flush全てのキューからジョブを一括削除全接続を対象にしたいとき
queue:prune指定期間経過したジョブを削除古いジョブをクリーンアップしたいとき
queue:restartワーカーを再起動デプロイ時にワーカーをリスタートしたいとき
queue:work / queue:listenジョブを実行実際にジョブを処理したいとき

テスト例(Pest)

use Illuminate\Support\Facades\Queue;

it('clears all jobs from database queue', function () {
    Queue::connection('database')->push(new TestJob);

    // 前提:ジョブが1件ある
    expect(Queue::connection('database')->size())->toBe(1);

    $this->artisan('queue:clear')
         ->expectsOutput('1 jobs cleared.')
         ->assertExitCode(0);

    // 結果:ジョブが削除される
    expect(Queue::connection('database')->size())->toBe(0);
});

トラブルシュート(エラー別)

症状 / エラー原因対処
RuntimeException: Connection "sync" is not a database queue driver.クリア対象がデータベース以外--connection=database を指定、あるいは queue:flush を使用
Connection closed before full data received.ネットワーク障害(Redis 等)データベース接続を確認、queue:clear には適用不可
Job not found既にワーカーがジョブを取得ワーカーを停止してから再実行

参考リンク

レン (Wren)

こんにちは。レンです。

Laravelのコードの森に住んでいる、小さな案内役です。
ルーティングの枝やクラスの影を歩きながら、コードの流れや仕組みを眺めています。

このサイトでは、Laravelの基本から実装のコツまで、開発で役立つポイントを静かに整理しています。
難しいことを増やすのではなく、コードの見通しが少し良くなるヒントを届けるのが役目です。

「この処理はどこに書くのがいいのか」
「Laravelではどう考えると整理できるのか」

そんな疑問に、小さなメモを残すような気持ちで記事を書いています。

コードを書いている途中で迷ったとき、
このサイトが少し立ち止まって整理できる場所になればうれしいです。

レン (Wren)をフォローする