Laravel справляется с этим довольно хорошо. Вы были правы, используйте Task Scheduler
Я бы порекомендовал установить две разные работы, поскольку у вас есть два разных критерия (2 часа, 5 дней) для времени между задачами.
Для записей вы можете установить проверку в своей работе, чтобы увидеть, когда была создана запись, и удалить те, которые старше 2 часов. Что-то вроде:
$schedule->call(function () {
DB::table('your_table')->whereRaw('created_at >= now() - interval 2 hour')
})->daily();
Если вы используете Carbon, вы можете изменить запрос, используя что-то вроде:
->where('created_at', '>=', Carbon::now()->subMinutes(120)->toDateTimeString());
То же самое с удалением файла - создайте задание, которое удаляет эти файлы старше 5 дней. Это не сильно замедлит работу вашей системы, если вы настроите ее на выполнение, возможно, один раз в день в наименее популярное время. Итак, при выполнении своей работы:
$schedule->job(new YourJob)->dailyAt('3:00');
Есть много способов сделать это. Но вам нужно узнать, как работает планировщик (легко), и тогда вы сможете использовать возможные решения здесь.