0

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

我的问题是我只有一个 100mb 的 MySQL 数据库,我无法保留所有消息,因为我有 55 个用户,我的数据库配额不足以存储所有内容,当它已满时,我的聊天会自动停止。所以每次感觉快满的时候,我都会从 PhpMyAdmin 执行 truncat。我想做的是以某种方式每小时执行一次 truncat ,这样它就可以每小时清除我的表。

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

4

3 回答 3

3

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

方法一:

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

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

并在 cron 中调用这个 php

php /path/to php file 

方法二:

创建 mysql EVENT。授予访问表事件的权限

SET GLOBAL EVENT_SCHEDULER = ON;
CREATE EVENT e_truncate
    ON SCHEDULE
      EVERY 1 HOUR
    DO
      TRUNCATE TABLE tablename
于 2013-10-24T02:28:33.967 回答
3

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

在 phpmyadmin 中运行以下查询。

启用它使用

SET GLOBAL EVENT_SCHEDULER = ON;

并创建一个这样的事件

  CREATE EVENT delete_messages

    ON SCHEDULE EVERY 3 DAY

    DO

    TRUNCATE TABLE 'tableName';

这是一个很好的教程。

Phpmyadmin 事件调度程序

于 2013-10-24T02:38:11.807 回答
3

我觉得每小时做一次忽略了一个更简单的选择。

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

因此,在您的“addMessage” sql 中,只需在提交新条目之前删除最旧的条目。

于 2013-10-24T02:31:28.460 回答