Php MySQL数据库中的自动删除消息

Php MySQL数据库中的自动删除消息,php,javascript,mysql,Php,Javascript,Mysql,您好,我有一个MySQL数据库表,用户在其中输入消息(通过表单),我想知道是否有一种方法可以在1分钟后自动删除消息? 我使用的代码是PHP。 非常感谢您的回复:)使用cron作业清除旧邮件。好的,您可以在执行任何其他操作之前运行删除查询。例如,每当您检查邮件时,首先删除所有超过1分钟的邮件 sleep ($seconds); // call the delete query 我想我还是不想收到超过1分钟的信息。使用日志会很好:)将消息插入数据库时,存储创建的时间戳。然后在PHP中,只显示时

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

使用cron作业清除旧邮件。

好的,您可以在执行任何其他操作之前运行删除查询。例如,每当您检查邮件时,首先删除所有超过1分钟的邮件

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

我想我还是不想收到超过1分钟的信息。使用日志会很好:)

将消息插入数据库时,存储创建的时间戳。然后在PHP中,只显示时间戳在当前时间1分钟内的消息。

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

  • 制作一个脚本,每X分钟运行一次,并在数据库中进行任何更改
  • 在脚本中插入新记录之前或之后删除所有过期记录
    • 您可以让cron脚本每分钟运行一次,并删除所有旧消息
    • 或者在表中创建一个有效的_until列,并将其设置为NOW()+60-然后仅显示具有有效的_until>=NOW()的行

      • 构建cron服务是我想到的第一件事,尽管这可能是一个不必要的复杂问题

        您可以在1分钟后以执行插入的相同脚本调用delete

         sleep ($seconds);
         // call the delete query
        
        另一种方法是将延迟逻辑传递给Mysql,Mysql将为您执行删除操作

        SELECT SLEEP(<seconds>);
        
        选择SLEEP();
        
        感谢所有回复/帮助:)Svish的第一个建议“您可以在执行任何其他操作之前运行删除查询。例如,每当你检查邮件时,首先删除所有超过1分钟的邮件。“将起作用……很明显,我不知道为什么我没有想到那个doh!”!再次感谢every1。

        解决方案1:用户cron作业,每分钟运行一次以检查和删除

        解决方案2:使用ajax完成这项工作


        我个人建议使用第一种解决方案,但如果您没有对服务器的SSH访问权,则必须选择第二种解决方案:D

        您的表模式是什么样子的?您运行的是哪种服务器操作系统?我完全同意不删除它们。从我的数据库中删除的项目很少,它们通常只是被停用的。谢谢,我真的需要删除它们以阻止数据库变得太满……第一个建议是“在执行任何其他操作之前,您可以始终运行删除查询。”。例如,每当你检查邮件时,首先删除所有超过1分钟的邮件。“将起作用……很明显,我不知道为什么我没有想到那个doh!”!谢谢,这是布里尔:)删除与插入相关的内容不会有任何帮助。这不是我想说的。我会修改的。我认为这个答案的第二个要点是对奎斯顿问题的直接回答。您可以在调用页面时删除过期记录。因此,这样您就不需要设置cron作业。精益解决方案。也就是说,我同意
        不要删除
        答案。根据我的经验,删除是表的一大负担。