如何在午夜从表中删除mysql数据?

时间:2013-12-12 02:25:31

标签: javascript php mysql sql

我有一个mysql表,我想让它在午夜每晚“清空”。我在网上搜索过一个答案,并没有发现任何对我有帮助的东西。我有这个想法,使用javascript获取当前时间,然后运行if语句,看看它是否等于午夜,如果是执行删除信息的PHP脚本。

使用Javascript:

var myVar=setInterval(function(){myTimer()},1000);

function myTimer()
{
var d=new Date();
var t=d.toLocaleTimeString();
    if(t == 12:00:00 AM){
            $.ajax({
                URL: 'delete.php';
            });
    };
};

delete.php:

<?php
require 'connect.php';
mysql_query("DELETE * FROM messages;");
?>

我已经通过将if语句中的时间设置为比实际时间提前几分钟的时间进行了测试,但是它不起作用。

1 个答案:

答案 0 :(得分:8)

实现自己的事件调度程序,尤其是使用JavaScript作为网页是一个坏主意。 用于此

  • 通过mysql命令行界面
  • 运行DELETE语句的cron作业
    /path/to/mysql -u<user> -p"<password>" <db_name> -e "delete from messages"
     CREATE EVENT delete_messages_at_midnight 
     ON SCHEDULE EVERY 1 DAY STARTS CURDATE() + INTERVAL 1 DAY
     DO DELETE FROM messages;

如果你采用MySQL事件方法:

  • 使用SHOW PROCESSLIST检查事件调度程序是否已启用。如果它处于开启状态,您应该会看到用户“Daemon”的流程“event_scheduler”。
  • 如果当前未启用调度程序,请使用SET GLOBAL event_scheduler = ON;启用调度程序。
  • 有关配置事件调度程序的更多信息,请阅读here