Core2Quad777
@Core2Quad777

Как изменять значение в бд по времени?

На сайте есть система, по которой доступ к определённому контенту открывается только по подписке. Информация о том, что пользователь оплатил подписку заносится в бд (есть отдельная строка, в которой изначальное значение равно нулю, а при оплате меняется на 1). Как менять это значение по времени, т.е значение сменилось на 1, а потом через месяц само сменилось на 0. Желательно сделать это без cron
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
Информация о том, что пользователь оплатил подписку заносится в бд (есть отдельная строка, в которой изначальное значение равно нулю, а при оплате меняется на 1).

В комплекте с информацией о факте оплаты должна существовать и информация о дате-времени открытия доступа по подписке. Кстати, в этом случае сама информация о факте оплаты не нужна, достаточно просто самого факта наличия момента оплаты либо срока действия оплаченного доступа.

значение сменилось на 1, а потом через месяц само сменилось на 0.

Для этого у MySQL есть свой встроенный планировщик. Запускаем, создаём процедуру, которая выполняется, например, ежеминутно, и обнуляет поле доступа для всех записей, у которых разница между текущим штампом времени и штампом времени открытия доступа превышает срок доступа (хардкод, либо взятый из служебной таблицы или даже из обрабатываемой записи).

MySQL 8.0 Reference Manual / Stored Objects / Usin...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А что мешает вместо 0/1 заносить срок окончания подписки и проверять его?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽