更新数据库中过期用户状态的最佳方法?

时间:2013-03-05 09:05:11

标签: php mysql database

在具有定期(例如:每月)订阅的付费应用程序的mysql数据库中,检查订阅已过期的用户并使其处于非活动状态的最佳方法是什么? 通常情况下,我只是检查应用程序是否已过期,但有几种类型的帐户,例如免费,试用等,这些帐户将没有到期期限。

我想在客户端应用程序方面保持简单,并且只需要检查“活动”状态,并允许用户使用应用程序,而不是切换案例所有帐户类型和到期日。此外,根据客户的要求,帐户类型可能会有所不同,如果逻辑位于(php)后端,则可以在不需要新客户端版本的情况下进行更新。

表格是这样的:

User ID | Expiry date | Status

我目前正在做的事情是我有一个偶尔运行一次的cronjob并更新所有过期日期已经超过当前时间的用户。

总结一下,我的问题是:

  • 当我们投入生产并拥有大量用户时,当前的方法是否会导致服务器上出现峰值负载?
  • 有更好,更清洁的方法吗?它是一种不同的更新方法还是用于处理活动/非活动用户和到期时间的不同逻辑?

2 个答案:

答案 0 :(得分:0)

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

即。查询如

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

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

这样做的好处是,每天只需要检查一小部分帐户(猜测一下,当用户登录时,会有超时的会话)。

答案 1 :(得分:0)

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

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