2013-04-28 2 views
1

Я перепроектирование нашей модели подписки и интересно, что это лучший шаблон дизайна:Лучший способ разработать срок действия подписки?

Модель 1:

Пользователя имеет дату выставления счетов.

В дополнение к дате выставления счетов пользователю назначается конкретная дата истечения срока действия. Дата истечения = signup_date + subscription_length.

Система авторизации разрешает доступ, если current_time() меньше, чем expiry_date.

Модель 2:

Пользователь имеет дату выставления счетов.

Система авторизации разрешает доступ, если статус подписки на пользователя = активен.

Использование Cronjob, статус подписки пользователя изменяется из активного истекли, если current_time> billing_date

+0

Пойдите с №1. # 2 может работать с ошибкой, и вы сохраняете избыточные данные (статус можно определить из даты выставления счетов). –

ответ

1

Модель 1 хороша, потому что вы только делаете оценку, когда вам нужно, то есть когда кто-то пытается что-то получить, она очень эффективна и сохраняет работу cron. Работы Cron могут быть болью для администрирования и могут создавать проблемы с масштабированием,

Модель 2 имеет то преимущество, что вы узнаете, когда сеансы истекают (или не долго после этого), то есть есть гарантированное событие по истечении срока действия. Это может быть хорошо, например. если вы хотите отправить электронное сообщение о том, что срок действия подписки истек, или вы хотите узнать, сколько подписей по-прежнему активны. Конечно, есть и другие модели, которые могли бы получить эти функции.

1

Я лично считаю, что Model 1 лучший подход здесь.
Даже если пользователь расширяет свою подписку между ними, вы можете безопасно применить обратный вызов и установить соответствующий expiry_date.
Это будет работать без каких-либо узких мест на фоновых заданиях, которые ожидаются cron in Модель 2.

Мне очень хотелось бы узнать мнения более опытных разработчиков в этом вопросе. :)

2

Модель 1 лучше с одной модификацией: expiry date = subscription_date + subscription_length - а не signup_date, так как дата регистрации всегда в первый раз, когда пользователь подписывает (обычно). Но они будут повторно подписываться повторно (надеюсь). Также может быть разрыв после истечения срока действия, который пользователь повторно подписывает, поэтому они будут терять время на свою новую подписку, если вы добавите только длину подписки к дате регистрации.

Модель 2, как показано на рисунке @, является хорошим способом найти, какие пользователи скоро будут иметь свои подписки.

Смежные вопросы