編輯:由DanFromGermany發佈的解決方案是一種很好的方法,如果您有數據庫資源要備用。如果數據庫是瓶頸,則可以切換到以下方法:
您對AJAX調用了一個phpfile,比如說process.php。在process.php中,你開始一個會話,並開始一個值$ _SESSION ['lastChatMessage'] = 0;
然後你作出的if/else角落找尋的實際代碼:
// time based check:
if($_SESSION['lastChatMessage'] > time()-1){ echo "Only one post per second";}
else{
// some code you use now
$_SESSION['lastChatMessage'] = time();// save time of posting
}
你也可以將$ lastChatMessage的數組,並在它每次都記得。然後創建一個函數,刪除所有小於time() - $ diffYouWant的值。 一些帖子將保留,這取決於你想要多大的數量:)
if(count($_SESSION['lastChatMessage']) > $maxPostsAllowed){ echo 'No flooding please';}
else{
// your code
}
爲什麼它不工作?計算某個時間範圍內的最後X個消息對我來說似乎是一個完全合理的解決方案。 – jeroen
可能是,但是如何在特定時間選擇物品? –
你說過你爲每條消息存儲了時間戳,所以只需使用查詢在最近X秒內提取消息的數量即可。 – Pitchinnate