0

在具有定期(例如:每月)订阅的付费应用程序的 mysql 数据库中,检查订阅过期的用户并使他们处于非活动状态的最佳方法是什么?通常我会在应用程序的到期日过后查看应用程序,但有几种类型的帐户,例如免费、试用等。它们不会有到期日。

我想在客户端应用程序方面保持简单,并使其只需要检查“活动”状态,并允许用户使用应用程序,而不是切换所有帐户的大小写类型和有效期。此外,帐户类型将来可能会有所不同,具体取决于客户的请求,如果逻辑位于 (php) 后端,那么这将允许更新而无需新的客户端版本。

该表将是这样的:

User ID | Expiry date | Status

我目前做事的方式是我有一个 cronjob,它会不时运行并更新所有过期日期已过当前时间的用户。

总结一下我的问题是:

  • 一旦我们投入生产并拥有大量用户,当前的方法是否会在服务器上造成峰值负载?
  • 有没有更好、更清洁的方法来做到这一点?是不同的更新方法还是处理活动/非活动用户和到期时间的不同逻辑?
4

2 回答 2

0

为什么不只是检查用户登录时是否未过期。

即查询喜欢

SELECT COUNT(*), expiry IS NULL OR expiry > NOW()
FROM users
WHERE username = ?
AND password = ?

然后检查您是否可以检查用户名/密码组合是否正确,以及帐户是否已过期/未过期。对于没有到期日期的帐户,请使用 NULL。

这样做的好处是每天只需要检查一小部分帐户(在这里猜测当用户登录时,他们会得到一个超时的会话)。

于 2013-03-05T09:12:42.380 回答
0

您可以为此任务创建 CRON JOB。

http://en.wikipedia.org/wiki/Cron

于 2013-03-05T09:26:01.473 回答