Очистка данных в таблице? - PullRequest
0 голосов
/ 13 марта 2019

Вот упрощенная версия происходящего:

  1. Пользователь заполняет форму.

  2. При сохранении формы идентификатор строки сохраняется в сеансе.

  3. Затем пользователь входит в систему.

  4. Событие входа пользователя в систему перехвачено, и правильная строка (идентификатор взят из сеанса) затем обновляется с идентификатором пользователя.

Теперь, если пользователь только завершает шаг 1 и шаг 2, он прекращает процесс, потому что он не хочет входить в базу данных, оставляя строки данных, не приписанные пользователю.

Мне нужно удалить эти строки.

Каков наилучший способ добиться этого?

  1. Есть ли способ выполнить транзакцию базы данных, которая выполняется между запросами, чтобы ее можно было запустить до входа в систему и зафиксировать после входа в систему?

  2. Будет ли сценарий очистки, выполняемый так часто, лучшим, не находя строк, приписанных пользователем, и удаляя их?

Или есть другой способ?

1 Ответ

1 голос
/ 13 марта 2019

Я бы создал скрипт очистки, используя планировщик, см. Основную идею ниже:

// app\Console\Kernel.php

protected function schedule(Schedule $schedule)
    {
        $schedule->call(function () {
            // Query all records that havent changed in an x-amount of time
            // and remove them.
        })->everyDay();
    }

Затем вы просто добавляете на свой сервер следующий CRON-скрипт:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

А помощник Artisan будет вызывать ваш планировщик каждую минуту и ​​запускать каждую задачу в зависимости от ее интервала.

Поскольку вы не можете определить, вернется ли пользователь когда-либо, в том числе тот факт, что сессия Laravel, скорее всего, очень скоро сама себя очистит (я полагаю, что время жизни по умолчанию составляет 120 минут), другого триггера для удаления определенной записи не будет. из вашей базы данных.

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