Как удалить некоторые записи или файлы после X раз - Laravel 5 - PullRequest
0 голосов
/ 17 января 2019

Я хочу создать скрипт, удалить некоторые записи через X раз, я выберу его, но я не знаю, как я могу это сделать? И то же самое с моими файлами, я хочу удалить некоторые файлы после X времени, например, из загрузки, и для этого я удалю файл из своего хранилища и запись файла из базы данных, , но это будет сделать мой сайт медленным , любой способ сделать это без проблем

Используйте это, например?

Мягкое удаление или Планирование задач

Моя таблица: My Table Image поэтому я хочу удалить эту запись, например, через 2 часа после создания? но у меня много записей? как это сделать?

Таблица файлов: Files Table Part 1 Files Table Part 2 это мои записи, они содержат путь к моим файлам, но срок действия каждого файла истекает, например, через 5 дней после создания, поэтому я буду удалять его из пути и после этого удалять записи из базы данных. но что сделает сайт очень медленным? Есть ли способ сделать это?

Спасибо :)

Ответы [ 2 ]

0 голосов
/ 17 января 2019

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');

Есть много способов сделать это. Но вам нужно узнать, как работает планировщик (легко), и тогда вы сможете использовать возможные решения здесь.

0 голосов
/ 17 января 2019
Files::where('created_at', '<', Carbon::now()->subHours(2))->delete();

Убедитесь, что у вас установлен пакет Carbon

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...