【问题标题】:How to reset mysql column to 0 each 24h?如何每 24 小时将 mysql 列重置为 0?
【发布时间】:2019-02-01 18:18:07
【问题描述】:

我有一个网站可以让用户下载 PDF 文件, 我为每个用户设置了每天 10 个文件的下载限制,并将这些数字存储在 MySQL 数据库中。一切都很好!

问题是:限制将永远设置,我希望它每 24 小时重置为 0。 是否有任何 phpmyadmin 命令或其他东西可以每 24 小时自动将该列重置为 0 或任何其他方式!

【问题讨论】:

    标签: php mysql phpmyadmin


    【解决方案1】:

    我会尝试不同的方式。

    每次用户下载某些文件时,我都会添加表 download_log(user_id, file_id, timestamp) 并插入行。 要检查用户是否达到限制,您可以检查他在过去 24 小时内执行了多少次下载。 类似的东西

    SELECT COUNT(*) FROM download_log WHERE user_id = ? AND timestamp > DATE_SUB(NOW(), INTERVAL 1 DAY)
    

    要安排一些操作,您可以使用cron 来运行脚本

    【讨论】:

      【解决方案2】:

      看起来您已经将下载计数存储在各种日志表中。

      为了使这些计数过期,我建议使用 MySQL 原生的事件调度程序。您可能需要在服务器参数中启用它。

      语法看起来像这样:

      CREATE EVENT myevent
          ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
          DO
            UPDATE count_db.count_table SET count_column = 0;
      

      【讨论】:

      • 是的,但我的问题是我的托管服务提供商锁定了超级用户,因为我不能使用调度程序
      • 您使用的是哪个托管服务提供商?有几个允许您编辑参数配置或文件,而无需直接访问机器。
      • one.com 他们在我的服务器上完全锁定了超级用户
      猜你喜欢
      • 2021-09-17
      • 2014-05-16
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      相关资源
      最近更新 更多