Laravel - Queues - Pruning Batches
Without pruning, the job_batches
table can accumulate records very quickly. To mitigate this, you should schedule the queue:prune-batches
Artisan command to run daily:
$schedule->command('queue:prune-batches')->daily();
By default, all finished batches that are more than 24 hours old will be pruned. You may use the hours
option when calling the command to determine how long to retain batch data. For example, the following command will delete all batches that finished over 48 hours ago:
$schedule->command('queue:prune-batches --hours=48')->daily();
Sometimes, your jobs_batches
table may accumulate batch records for batches that never completed successfully, such as batches where a job failed and that job was never retried successfully. You may instruct the queue:prune-batches
command to prune these unfinished batch records using the unfinished
option:
$schedule->command('queue:prune-batches --hours=48 --unfinished=72')->daily();