2010-11-25 45 views
2

嗨我有一个MySQL数据库表,用户输入消息(通过表单),我想知道是否有一种方法可以在说1分钟后自动删除邮件? 我使用的代码是PHP。 非常非常感谢您的回复:)在MySQL数据库中自动删除邮件

+0

你的表模式是什么样的? – 2010-11-25 09:18:55

+0

你在运行什么样的服务器? – Thariama 2010-11-25 09:19:19

回答

1

使用cron作业来清除旧邮件。

4

那么,你可以随时运行删除查询,然后再做其他任何事情。例如,无论何时检查消息,首先删除所有超过1分钟的消息。

我想我宁愿不要收到超过1分钟的消息。它可以很好的与日志:)

+2

我完全同意不删除它们。从我的数据库中删除的项目非常少,通常只是停用 – 2010-11-25 09:27:39

2

当一个消息被插入到数据库,存储一个time_created时间戳。然后在你的PHP中,你只显示时间戳在当前时间1分钟内的消息。

4

我可以想出两种方法来实现这一点。

  1. 制作一个脚本,每隔X分钟运行一次脚本,并在您的db中进行任何更改。
  2. 在脚本中插入新记录之前或之后,删除所有过期的记录。
1
  • 你可以做一个cron脚本,每分钟运行,删除所有旧的邮件
  • 或在表中做出valid_until柱,并将其设置为NOW()+ 60 - 然后只显示行这有valid_until> = NOW()。
1

构建cron服务是我首先想到的,虽然可能是一个不必要的复杂因素。

您可以在与sleep的1分钟之后插入相同的脚本中调用删除。

sleep ($seconds); 
// call the delete query 

另一种方法是延迟逻辑传递到MySQL trigger,将做删除你。

SELECT SLEEP(<seconds>); 
0

感谢所有的回复/帮助:)第一个建议由Svish'你可以随时运行一个删除查询,然后再做任何事情。例如,无论何时检查消息,首先删除所有超过1分钟的消息。'将工作......很明显,不知道为什么我没有想到这样做!再次感谢every1。

1

解决方案1:用户cron作业那里每分钟检查并删除

解决方案2:使用AJAX做的工作

我个人建议的第一个解决方案,但如果u有服务器没有SSH访问你必须选择第二个:D