Задать вопрос

Как делать действия в конкретное время на сервере?

Ну, возможно я даже вопрос неправильно сформулировал. Впервые столкнулся с такой задачей. Много раз на других сайтах видел такое. Вот, представим. Мне надо сделать авторизацию через код, который я вышлю на почту при регистрации пользователя. Но, я хочу чтобы неподтверждённые пользователи удалялись через час после регистрации сервером. А соответственно те, которые подтвердились, у низ время удаления менять на null. Записать в базу данных при регистрации время удаления я смог, оно как и сама запись у нас есть. Как можно сделать, чтобы сервер именно в это время (или чуть позже конечно) удалил пользователя. Может есть какой-то планировщик заданий, который может выполнить в конкретное время функцию (я на ноде делаю) или ещё что-то. В голову ничего не приходит рабочего, может и ищу плохо, но найти не могу.
  • Вопрос задан
  • 89 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 3
karabanov
@karabanov
Системный администратор
Есть планировщик заданий CRON. Можешь написать скрипт который будет удалять записи из базы и запускать его по расписанию. Для решения твоей задачи подойдёт.
Есть таймеры SystemD современный, удобный, метод периодического запуска задач, лишённый недостатков CRON, можешь попробовать его.
Ответ написан
@antares4045
https://www.npmjs.com/package/node-schedule

Раз в час отчищаете от записей, старше часа (теоретически возможен кейс, что запись проживет 2 часа, но это не важно: если необходимо, чтобы запись была активна ровно час, то при обработке кода, проверяте не истёк ли срок его действия)
Ответ написан
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
ЕсиВы ползуетесь базой данных MySQL, то можете исользовать встроенный механизм Event Scheduler который может запускаться каждую минуту и удалять записи в которых время регистрации отлично от NULL и старше одного часа

Если используете Redis в качестве базы, то при сщздании записи можно сразу указать TTL (время жизни) после которого запись автоматически будет удалена. В этом случае при подтверждении записи нужно будет переносить её в постоянную базу - MySQL
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы