【发布时间】:2015-04-05 21:40:10
【问题描述】:
我有一个密码恢复系统,允许用户通过电子邮件恢复他们的密码。每个请求的详细信息都插入到我的recoveries 表中,并在成功恢复后被删除。我为每个恢复设置了一个时间戳,该时间戳设置在每个恢复创建后 10 分钟。
我想实现一个系统,它会在 10 分钟后自动删除每个过期的恢复。由于每一行的到期时间都不同,这意味着使用 cron 作业在执行此任务时效率极低。
实现这一目标的最有效方法是什么?
这是我的代码:
$time = time();
$recoveries = DB::fetch("DELETE FROM `recoveries` WHERE `expiry` <= ?;", array($time));
【问题讨论】:
-
我会亲自将记录留在表中,并使用恢复的密码向登录添加条件,以匹配您的 10 分钟延迟。然后添加一个每天晚上打扫房间的cron任务,清理过时的条目。
-
@satishrajak 我什么时候应该运行该代码?
-
你可以在你的mysql数据库中运行一次这段代码,它会在每10分钟内自动运行一次
-
我只是在 Phpmyadmin 的 SQL 控制台中运行该代码吗?