【问题标题】:How to remove a data in MySQL database after certain period automatically? [duplicate]如何在一段时间后自动删除 MySQL 数据库中的数据? [复制]
【发布时间】:2019-04-04 11:27:25
【问题描述】:

我有一个名为user_logs 的表。我想每 30 天删除一次日志。有没有什么办法可以自动完成。我在我的项目中使用php and mysql

【问题讨论】:

  • 设置一个每天运行的作业,清除超过 30 天的条目。
  • 听起来像是 cronjob 的工作!

标签: php mysql


【解决方案1】:

您可以设置一个事件来删除超过 30 天的记录,例如:

CREATE EVENT IF NOT EXISTS `Clean_Older_Than_1_month_logs`
ON SCHEDULE
EVERY 1 DAY_HOUR
COMMENT 'Clean up user_logs older than 1 month.'
DO
    DELETE FROM user_logs
    WHERE user_logs_date < DATE_SUB(NOW(), INTERVAL 1 MONTH)

【讨论】:

    【解决方案2】:

    在这里,您应该在 30 天后在 Js 中使用 'setInterval()' 进行 ajax 调用。

    index.html 页面

    $(document).ready(function(){
        setInterval(function(){ 
            alert("Event Fire");
            $.ajax({
                url: "30_day_event.php",
                success: function(result){
                    alert('database operation done');
                }
            });
        }, 1000*60*60*24*30);
    });
    

    30_day_event.php页面

    //your your logic to delete data from user_logs table
    //your callback code
    

    【讨论】:

    • 不过,人们必须将网页保持打开 30 天。不是很人性化
    • 'setInterval(function(){ alert("Event Fire"); $.ajax({ url: "30_day_event.php", success: function(result){ alert('数据库操作完成' ); } }); }, 1000*60*60*24*30);'如果你在 node.js 中转换这段代码 sn-p 它将在更严格的运行中工作。
    猜你喜欢
    • 2016-07-19
    • 1970-01-01
    • 2018-11-29
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    相关资源
    最近更新 更多