queue:forget — キューからジョブを削除するコマンド

artisan

queue:forget

カテゴリ:アーティザンコマンド
タイプ:artisan

一言説明

失敗したジョブをfailed_jobsテーブルから単一で削除します。
テーブル肥大化を防ぐために使います。


コマンド構文

php artisan queue:forget {id}
引数 必須 内容
{id} failed_jobs テーブルに保存されているジョブの ID

備考
failed_jobs テーブルは ID 重複がないため、指定した ID が存在すれば必ず一件削除されます。
ID が無い場合は ErrorException が発生します。


実行例

# ID 42 の失敗ジョブを削除
php artisan queue:forget 42

失敗ジョブ一覧は php artisan queue:failed で確認できます。


重要ポイント

項目 内容
単一削除のみ 現状複数削除は不可。複数削除したい場合は queue:flush で全件消去するか、PR を検討してください。
失敗ジョブの管理 定期的に queue:flush で全件消去するとテーブル肥大化を防げます。
プロセス管理 queue:work は Supervisor 等で管理し、必要に応じて queue:restart で再起動します。
ロギング queue:forget で削除したジョブは再度実行されないので、実務ではログを残すようにしておくと安心です。

失敗ジョブを扱う他のコマンド

コマンド 主な用途
queue:failed 失敗したジョブ一覧を表示
queue:flush 失敗ジョブを全件一括消去
queue:retry 失敗ジョブを再実行
queue:forget 失敗ジョブを単一で消去

実践例(テストケース)

use App\Jobs\SendMailJob;
use Illuminate\Support\Facades\Queue;
use Tests\TestCase;

class QueueForgetTest extends TestCase
{
    public function testQueueForgetDeletesFailedJob()
    {
        // 失敗ジョブを作成
        Queue::fake();
        dispatch(new SendMailJob('dummy@example.com'));
        Queue::assertPushed(SendMailJob::class);

        // 実際に失敗ジョブを取得
        $failedJob = Queue::pushFailedJob(new \Exception('Test failure'));

        // queue:forget を実行
        $this->artisan('queue:forget', ['id' => $failedJob->getId()])->assertExitCode(0);

        // DB から消えていることを確認
        $this->assertDatabaseMissing('failed_jobs', ['id' => $failedJob->getId()]);
    }
}

まとめ

  • php artisan queue:forget {id} で失敗ジョブを 1 件だけ削除
  • テーブル肥大化防止のため、必要に応じて queue:flush で全件消去
  • Supervisor 等でキュープロセスを管理し、失敗ジョブの定期的なクリーンアップを実施
  • 公式ドキュメント: https://laravel.com/docs/12/queues
  • GitHub Discussions(多重削除の議論): https://github.com/laravel/framework/discussions/43725

これで「失敗ジョブを忘れる」操作を最短で理解・実行できます。

レン (Wren)

こんにちは。レンです。

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

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

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

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

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

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