2011-12-28 63 views
0

基本上我想每隔X天就截斷一個表,但我不想使用cron。我想在php文件中有一種內置的腳本來做到這一點,也許sql觸發器可以幫助我。不幸的是我不知道如何使用它們。除cron之外,還有其他方式可以定期執行SQL代碼嗎?

+0

有沒有理由不能使用cron?這可能是最簡單和最明顯的解決方案。 – Polynomial 2011-12-28 13:40:56

+0

單獨使用php和sql嗎?編號 – Alfabravo 2011-12-28 13:44:28

回答

0

根據MySQL的版本,您可能有權訪問CREATE EVENT,它允許MySQL在計劃的時間觸發自己的進程。

例如

CREATE EVENT myevent 
    ON SCHEDULE EVERY 1 DAY 
    DO 
     UPDATE myschema.mytable SET mycol = mycol + 1; 

運行任務的每一天

其它數據庫可能有等價,但你沒有確定你正在使用的數據庫。

+0

我正在使用mysqli,它適用於那個嗎? – menislici 2011-12-29 12:55:52

+0

Mysqli不是數據庫,它是PHP和MySQL數據庫之間的接口......但它的意思是,你使用MySQL作爲數據庫,所以是的!您可以使用它(只需檢查您首先使用的MySQL版本) – 2011-12-29 13:01:44

+0

我的mysql版本是5.5.8。假設它支持EVENT,可以使用非過程風格完成,如下所示:$ sql =「CREATE EVENT myevent ON SCHEDULE EVERY 1 DAY DO UPDATE myschema.mytable SET mycol = mycol + 1」; $ result = $ connect-> query($ sql)或者die(mysqli_error()); ? – menislici 2011-12-29 13:15:34

3

您可以構建一些內容,以檢查上次清空時每個頁面的訪問情況。如果最後一次比你想要的長,你可以清空它。這不是非常有效,但如果你不能或不想使用cron,這是一種可能性。

+0

我想我必須在數據庫中使用時間戳,對吧? – menislici 2011-12-28 13:53:13

0

在我的網站上,我有我自己的「cron」系統。在頁面加載後,我立即向我的cron腳本發出ajax請求。它檢查存儲在數據庫中的最後一個cron日期的當前日期,並且如果[當前日期 - 最後一個cron日期]大於給定的intercal,則執行我的cron腳本並更新最後一個cron日期。我用ajax做了,所以我可以做出相當沉重的cron作業,並且不影響用戶頁面加載。而且這個cron只在用戶訪問你的頁面時纔會執行,在很多情況下,如果用戶沒有訪問你的頁面,你不需要執行cron。

相關問題