2010-10-27 75 views
0

我使用Javascript,PHP和MySQL進行了AJAX聊天。阻止AJAX聊天顯示重複消息(Javascript,PHP,MySQL)

我從一個從MySQL數據庫獲取數據的PHP頁面發送帶有JSON的聊天數據。每條聊天消息都會插入到數組中,並且每隔幾秒就會通過AJAX呼叫進行提取。數據庫中的每一行都具有郵件發佈時間的時間戳(時間戳以毫秒添加到時間戳上,格式爲:1288147058.77943)。

在每個AJAX請求上,用戶數據庫中的一列用上次下載聊天數據時的時間戳更新。像以下這樣的查詢用於檢索自上次AJAX調用後發佈的聊天消息。

SELECT user, message FROM chat WHERE posted_time >= '$last_check_get' 

但是,有時2個請求經歷如此之快,兩個請求發回相同的消息,讓他們得到顯示,即使兩次雖然他們沒有實際存入的兩倍。我怎樣才能避免這種情況?

+0

請將您的問題格式化爲第 – Petah 2010-10-27 03:41:48

回答

1

而不是使用時間戳,爲每個消息分配一個序列號。檢查新消息基本保持不變。

+0

段我知道這篇文章已經過時了,但我認爲其他有助於任何路人的東西是驗證最後一次消息ID來自上次聊天查找消息的時間,以及收到他們。只需將其存儲爲lastChatMessageId等變量,然後當新消息進入時,您可以執行if(lastChatMessageId!= newMessageId)並追加新消息,否則有可能在某處某處做得不對的情況下可能會加倍其他。確保您在完成檢查之前只檢查一條新消息,否則可能翻一番。 – phpvillain 2016-02-25 13:55:18