每小时清空一个MySQL表

时间:2013-10-24 02:15:52

标签: php mysql

我有一个用PHP Ajax和MySQL编写的聊天脚本。它将消息记录在表“usermsg”上。

我的问题是我只有一个100mb的MySQL数据库而且我无法保留所有消息,因为我有55个用户而且我的数据库配额不足以存储所有消息,当它已满时我的聊天会自动停止。 因此,每当我觉得它几乎已满时,我会从PhpMyAdmin执行truncat。 我想要做的是以某种方式每小时执行截断,以便它可以每小时清理一次我的表。

有人可以帮助PHP脚本或其他东西吗?感谢。

3 个答案:

答案 0 :(得分:3)

使用cronjobs每小时执行一次php或使用mysql事件来完成此任务

方法1:

创建一个php并为它做cron作业

<?php
// write database connection code
mysqli_query("TRUNCATE TABLE tablename");
?>

并在cron中调用此php

php /path/to php file 

方法2:

创建mysql EVENT。授予访问表

事件的权限
SET GLOBAL EVENT_SCHEDULER = ON;
CREATE EVENT e_truncate
    ON SCHEDULE
      EVERY 1 HOUR
    DO
      TRUNCATE TABLE tablename

答案 1 :(得分:3)

我觉得每小时都会忽略一个更简单的选项。

另一种选择是每次创建新条目时删除最旧的条目。这消除了对转储整个表的cron作业的需要,因为这可能会通过删除与聊天仍然相关的条目来中断聊天。

所以在你的“addMessage”sql中,只需删除最旧的条目,然后再提交新条目。

答案 2 :(得分:3)

您可以使用事件调度程序。

在phpmyadmin中运行以下查询。

使用

启用它
SET GLOBAL EVENT_SCHEDULER = ON;

并创建一个类似的事件

  CREATE EVENT delete_messages

    ON SCHEDULE EVERY 3 DAY

    DO

    TRUNCATE TABLE 'tableName';

这是一个很好的教程。

Phpmyadmin event scheduler

相关问题