我有一个用PHP Ajax和MySQL编写的聊天脚本。它将消息记录在表“usermsg”上。
我的问题是我只有一个100mb的MySQL数据库而且我无法保留所有消息,因为我有55个用户而且我的数据库配额不足以存储所有消息,当它已满时我的聊天会自动停止。 因此,每当我觉得它几乎已满时,我会从PhpMyAdmin执行truncat。 我想要做的是以某种方式每小时执行截断,以便它可以每小时清理一次我的表。
有人可以帮助PHP脚本或其他东西吗?感谢。
答案 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';
这是一个很好的教程。