-
Отметка времени истечения срока действия.
Одним из распространенных методов является сохранение отметки времени истечения срока действия рядом с погашенным кодом в базе данных. При активации кода вы устанавливаете дату истечения срока действия на будущую дату. При проверке того, истек ли срок действия кода, вы можете сравнить текущую временную метку с временной меткой истечения срока действия.Пример на SQL:
CREATE TABLE RedeemedCodes ( code VARCHAR(10) PRIMARY KEY, redeemed_at TIMESTAMP, expires_at TIMESTAMP ); -
Интервал действия:
Вместо хранения точной отметки времени вы можете хранить продолжительность действия кода. При активации кода вы рассчитываете дату истечения срока действия, добавляя продолжительность к текущей метке времени.Пример на SQL:
CREATE TABLE RedeemedCodes ( code VARCHAR(10) PRIMARY KEY, redeemed_at TIMESTAMP, expiration_interval INTERVAL ); -
Флаг состояния.
Другой подход — использовать флаг состояния, чтобы указать, истек ли срок действия погашенного кода. Вы можете установить для флага значение «активный» при погашении кода и обновить его до «истекшего» после истечения срока его действия.Пример на SQL:
CREATE TABLE RedeemedCodes ( code VARCHAR(10) PRIMARY KEY, redeemed_at TIMESTAMP, status VARCHAR(10) ); -
Автоматическая очистка.
Если у вас частое использование кода, вы можете настроить запланированное задание или задание cron для автоматического удаления кодов с истекшим сроком действия из базы данных через определенные промежутки времени.Пример на SQL:
DELETE FROM RedeemedCodes WHERE expires_at < NOW();