【发布时间】:2013-03-05 09:05:11
【问题描述】:
在具有定期(例如:每月)订阅的付费应用程序的 mysql 数据库中,检查订阅过期的用户并使他们处于非活动状态的最佳方法是什么? 通常我会在应用程序的过期日期过后查看应用程序,但有几种类型的帐户,例如免费、试用等。它们不会有过期时间。
我想在客户端应用程序方面保持简单,并使其只需要检查“活动”状态,并允许用户使用应用程序,而不是切换大小写所有帐户类型和到期日期。此外,帐户类型将来可能会有所不同,具体取决于客户的请求,如果逻辑位于 (php) 后端,那么这将允许更新,而无需新的客户端版本。
表格应该是这样的:
User ID | Expiry date | Status
我目前做事的方式是我有一个 cronjob,它会不时运行并更新所有过期日期已过当前时间的用户。
总结一下我的问题是:
- 一旦我们投入生产并拥有大量用户,当前的方法是否会导致服务器负载激增?
- 是否有更好、更清洁的方法来执行此操作?是不同的更新方法还是处理活跃/非活跃用户和过期时间的不同逻辑?
【问题讨论】:
-
您可以检查用户登录时的到期日期,并在需要时更新状态
-
也许我在这里太简单了,但是为什么不简单地检查用户登录时的到期日期并使用它来确定他们是否处于活动状态?您已经从数据库中获取了他们的数据,因此不会增加负载,这意味着您不必运行 CRON 作业或类似的作业(从实际的角度来看,这确实不应该给您的服务器增加太多负载,特别是如果你在非常规时间运行它)
-
我的错。我又忘记了一个问题。问题是该应用程序是一个社交网络应用程序,当用户处于非活动状态时,他发布的所有内容都会被隐藏,直到他再次订阅。如果用户处于非活动状态并且不再订阅或登录,那么他将在数据库中保持活动状态,并且仍将显示他的帖子。