如果存儲在db中的時間戳與當前時間之間的差值爲5分鐘或更長時間,我希望腳本刪除該行。PHP MySQL如果時間多於或超過5分鐘,則存儲時間
例
在DB已經連續2011/12/25 10:00
當前時間是2001年12月25日10:06
我希望它刪除數據庫行。
如果存儲在db中的時間戳與當前時間之間的差值爲5分鐘或更長時間,我希望腳本刪除該行。PHP MySQL如果時間多於或超過5分鐘,則存儲時間
例
在DB已經連續2011/12/25 10:00
當前時間是2001年12月25日10:06
我希望它刪除數據庫行。
如果你在Linux中,你可以寫一個chron job執行一個php(或幾乎任何其他語言)的腳本來做到這一點。據我所知,一個數據庫不會有這種內置的功能,你需要編寫積極的功能。希望這可以幫助。
試試這個,不壽測試:
$query = mysql_query("SELECT * FROM table");
$result = mysql_fetch_array($query);
$id = $result['id'];
$timestamp = strtotime($result['timestamp']);
if($timestamp < time()-300){
mysql_query("DELETE FROM table WHERE id=".$id."");
}
爲什麼cron的建議?您可以輕鬆地在每個頁面視圖上調用非常簡單的刪除語句。在成爲瓶頸的時刻(然後我們討論的是大量未改造的表格結構或非常繁忙的網站),查看查詢速度如此緩慢的原因可能會變得適當。運行解釋查詢,應用一些索引,等等。如果問題仍然存在,可能會讓遊客等待太多工作,然後是cron的時間。
在那之前,只需在每個頁面視圖執行以下查詢:
delete
from
YourTable
where
adddate(YourDateTimeColumn, interval 5 minute) < now()
上面的代碼稍有不妥。它應該是
delete
from
YourTable
where
adddate(YourDateTimeColumn, interval 5 minute) < now()
有一分鐘,它不應該在那裏。
這是非常廣泛的。你在哪個部分掙扎?你能顯示你現在需要查詢數據庫的代碼嗎? – 2011-12-16 00:49:00
我認爲你所尋找的是某種類型的cron工作。 – 1ftw1 2011-12-16 00:57:07
@Russell你真的想要仔細檢查你接受的答案。 – deceze 2011-12-16 01:33:40