我正在重新设计我们的订阅模型,并想知道什么是最好的设计模式:
模型1:
用户有结算日期。
在结算日期之上,为用户分配了特定的到期日期。到期日期= signup_date + subscription_length。
如果current_time()小于expiry_date,则授权系统授权访问。
模型2:
用户有结算日期。
如果用户订阅状态=有效,授权系统会授权访问。
使用Cronjob,如果current_time>用户的订阅状态从活动状态更改为已过期状态。 billing_date
答案 0 :(得分:2)
模型1最好只进行一次修改:expiry date = subscription_date + subscription_length
- 而不是signup_date
,因为注册日期始终是用户第一次注册(通常)。但他们会反复重新订阅(希望如此)。在用户重新订阅到期后可能还存在差距,因此如果您只在注册日期添加订阅长度,他们将失去新订阅的时间。
答案 1 :(得分:1)
我个人认为 Model 1 是一种更好的方法。
即使用户在其间扩展订阅,您也可以安全地应用回调并设置适当的expiry_date
这将对cron在 Model 2 中预期的后台作业没有任何瓶颈。
我很想在这个问题上学习更有经验的开发者的观点。 :)
答案 2 :(得分:1)
模型1很好,因为您只在需要时进行评估,即当有人试图访问某些内容时,它非常有效并且可以保存一份cron作业。 Cron工作可能很难管理,并且可能会产生扩展问题,
模型2的优势在于您可以了解会话何时到期(或不久之后),即在到期时有保证的事件。这可能是件好事,例如如果您要发送一封电子邮件,说明订阅已过期,或者您想知道有多少订阅仍处于活动状态。当然还有其他模型可以获得这些功能。