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

Php 创建一个MySQL事件,在创建后10分钟内高效地删除行,php,mysql,events,cron,Php,Mysql,Events,Cron,我有一个密码恢复系统,允许用户恢复他们的密码。这些请求存储在恢复表中。此表在到期列中包含时间戳,用于说明每行的创建时间 我希望此事件针对恢复中的每一新行单独运行,以便它们在创建后正好10分钟过期 我有这段代码,但我不知道如何让它在recoveries中创建每一行后正好运行10分钟: CREATE EVENT `delete_recoveries` ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 10 MINUTE ON COMPLETION PRESERV

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

我希望此事件针对
恢复
中的每一新行单独运行,以便它们在创建后正好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;
CREATE EVENT`delete\u恢复`
按计划以当前时间戳+间隔10分钟
竣工保护区
一定要开始
从'recoveries'中删除,其中'expiration`
我认为你的部分问题在于你在工作中使用了错误的工具。你真正需要的是一份工作

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


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

这与前面的问题非常接近。你真的不想在事情发生后每10分钟就有一个事件发生。这不是最好的解决办法。是的,但没有人给我一个好的答案。如果这不是正确的解决方案,我还能做什么?你对另一个问题的回答很好,满足了你的需要,包括任意的精确10分钟的截止时间,但也非常有效。你应该回去重读,直到你明白为什么会这样。