【发布时间】:2019-02-01 18:18:07
【问题描述】:
我有一个网站可以让用户下载 PDF 文件, 我为每个用户设置了每天 10 个文件的下载限制,并将这些数字存储在 MySQL 数据库中。一切都很好!
问题是:限制将永远设置,我希望它每 24 小时重置为 0。 是否有任何 phpmyadmin 命令或其他东西可以每 24 小时自动将该列重置为 0 或任何其他方式!
【问题讨论】:
标签: php mysql phpmyadmin
我有一个网站可以让用户下载 PDF 文件, 我为每个用户设置了每天 10 个文件的下载限制,并将这些数字存储在 MySQL 数据库中。一切都很好!
问题是:限制将永远设置,我希望它每 24 小时重置为 0。 是否有任何 phpmyadmin 命令或其他东西可以每 24 小时自动将该列重置为 0 或任何其他方式!
【问题讨论】:
标签: php mysql phpmyadmin
我会尝试不同的方式。
每次用户下载某些文件时,我都会添加表 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 来运行脚本
【讨论】:
看起来您已经将下载计数存储在各种日志表中。
为了使这些计数过期,我建议使用 MySQL 原生的事件调度程序。您可能需要在服务器参数中启用它。
语法看起来像这样:
CREATE EVENT myevent
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
DO
UPDATE count_db.count_table SET count_column = 0;
【讨论】: