2012-08-22 33 views
3

你好,我將創建一個基於Web的聊天程序。 所有聊天都是私人聊天,沒有分組。與數據庫在線交談 - 最快的方式嗎?

我需要保留所有聊天記錄。 我的想法是將所有消息推送到一個mysql數據庫,然後每半秒鐘檢查一次這個數據庫是否有傳入的消息。

這是創建Web應用程序的最佳方式嗎?該網站應該支持2000個用戶同時聊天。

有沒有更好的選擇?我看到有人在談論多個數據庫,文本文件,TCP/IP(IRC)和SQL的組合等等。

+2

一個選項是Redis的[訂閱](http://redis.io/topics/pubsub)功能。 MySQL數據庫並不適合實時聊天。 – Snowball

+0

相關文章:http://stackoverflow.com/questions/11516746/webbased-chat-in-php-without-using-database-or-file –

+0

如果它只是記錄,**文本文件** \ m / – hjpotter92

回答

2

MySQL一次能夠處理大量的併發請求,但是您如何管理和維護數據庫是一個重點。

完美維護和索引表應該沒有問題。儘可能保持桌子的結構簡單。像

+----------------+--------------+----------------- 
| from  |  to  | message  | 
+----------------+--------------+----------------- 

而且,沒有完美的方式來創建一個聊天程序。取決於許多其他因素,如

  • 請求類型: AJAX或彗星或WebSocket的
  • 申請編碼:沒有垃圾編碼,下面詳細設計圖紋
  • 緩存的一個清潔OO碼:儘可能緩存大部分靜態信息。
  • 數據歸檔或事務處理
  • 查詢你什麼連同消息獲取(可能是那些東西可能之前緩存。這些東西包括namesavatar等)