创建一个MySQL事件,在创建后10分钟内有效删除行

时间:2015-04-06 02:18:39

标签: php mysql events cron

我有一个密码恢复系统,允许用户恢复他们的密码。这些请求存储在recoveries表中。此表包含expiry列中的时间戳,用于说明每行创建的时间。

我希望此事件针对recoveries中的每个新行单独运行,以便它们在创建后10分钟完全过期

我有这段代码,但我不知道如何在recoveries中创建每一行后10分钟运行它:

CREATE EVENT `delete_recoveries`
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 10 MINUTE
ON COMPLETION PRESERVE

DO BEGIN
      DELETE FROM `recoveries` WHERE `expiry` < DATE_SUB(NOW(), INTERVAL 10 MINUTE);
END;

1 个答案:

答案 0 :(得分:0)

我认为你的部分问题是你正在使用错误的工具来完成工作。你真正需要的是queueing system

稍微改变你的设计。不要将所有工作都放在数据库中,而是让应用程序层将事物添加到队列中,并定期检查要执行的作业。大多数队列都存在于内存中,因此读取速度非常快,而且很多队列都可以添加延迟,直到项目在队列中可见。

或者,使用cron作业检查数据库,基本上每十分钟做一次。