在注册 30 天后重置整个列


Reset a whole column 30 days after signup

我有一个Wordpress网站,在我的wp_users表中,我有"user_registered",这是注册日期,"download_limit"是计算用户使用的下载次数。如何在注册日期后每 30 天将用户下载限制重置为 0?

我没有

使用Wordpress的经验,但是在纯sql(MySql)中,查询可能如下所示:

UPDATE wp_users
SET download_limit=0
WHERE
MOD(
    TIMESTAMPDIFF(
        DAY,
        user_registered, 
        NOW()
    ), 
    30
) = 0

WHERE 条件是魔术发生的地方。您计算从现在到订阅日期之间的天数差。如果它能被 30 整除,您就知道需要重置它们的计数器。

您可能需要调整此设置以反映正确的列名和表名。此外,如果您的订阅日期是时间戳,则可能需要将其包装在FROM_UNIXTIME函数中。

正如@KhorneHoly正确提到的,您需要通过某种(懒惰的)cron 机制每天运行一次此查询。

您需要一个每天运行的脚本。该脚本将重置满足条件的所有用户的下载限制。

此脚本可以每天使用 cronjob 启动一次,也可以在当天的第一次访问时启动脚本。

这可能是这样的:

  1. 用户登录 -> 函数将被调用
  2. 函数
  3. 检查此函数是否在今天之前被调用过(数据库中保存的日期时间)
  4. 如果未调用,请运行函数并更新日期时间。

对于 SQL,请查看@Pevara