2013-10-24 34 views
0

我有一個寫在PHP Ajax和MySQL上的聊天腳本。它將消息保存在「usermsg」表中。每小時清空一個MySQL表

我的問題是,我只有一個100MB的MySQL數據庫,並且我無法保留所有消息,因爲我有55個用戶,而且我的db配額不足以存儲所有數據,當它已滿時,我的聊天會自動停止。 因此,我每次感覺它幾乎已滿時,都會從PhpMyAdmin執行truncat。 我想要做的是不知何故每小時執行一次truncat,因此它可以每小時清理一次我的表格。

有人可以幫助一個PHP腳本或什麼可以做到這一點?謝謝。

+0

東西,這將幫助確保該數據庫設計正確,所以它佔用較小的空間成爲可能。你可以發佈表格模式嗎? –

+0

您可以使用「cronjob」截斷數據。 –

回答

3

使用cronjobs執行PHP的一個小時或使用MySQL的事件來實現這一任務

方法1:

創建一個PHP和它

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

做cron作業並在cron中致電此php

php /path/to php file 

方法2:

create mysql EVENT。給特權訪問事件表

SET GLOBAL EVENT_SCHEDULER = ON; 
CREATE EVENT e_truncate 
    ON SCHEDULE 
     EVERY 1 HOUR 
    DO 
     TRUNCATE TABLE tablename 
+0

這非常有幫助!感謝 –

3

我覺得每小時忽略一個簡單的選項。

另一種選擇是每次創建新條目時刪除最舊的條目。這消除了轉儲整個表的cron作業的需要,因爲這可能會通過刪除剛纔與聊天相關的條目來中斷聊天。

因此,在您的「addMessage」sql中,只需在提交新條目之前刪除最早的條目即可。

+0

以及如何使用php來完成這項工作? –

3

你可以使用事件調度器來做到這一點。

在phpmyadmin中運行以下查詢。

允許它使用

SET GLOBAL EVENT_SCHEDULER = ON; 

而且這樣

CREATE EVENT delete_messages 

    ON SCHEDULE EVERY 3 DAY 

    DO 

    TRUNCATE TABLE 'tableName'; 

創建活動在這裏是一個不錯的教程這一點。

Phpmyadmin event scheduler