2010-06-04 146 views
3

我需要創建一個類似於Facebook聊天的聊天。PHP實時與ajax輪詢聊天

我想使用ajax輪詢(每2-3秒發送一次請求)。

這是一個很好的方法嗎?或者我需要使用其他服務器端語言,如erlang和server-comet?

+1

這可能是有趣的:Facebook工程師關於他們的聊天實施的說明http://www.facebook.com/note.php?note_id=14218138919 – 2010-06-04 11:37:13

回答

2

或者我需要使用其他服務器端語言

沒有 - 這不是真正相關的 - 最大的問題是,HTTP不支持推送通知 - 讓你在Web服務器上使用的語言是幾乎不相關。

server-comet?

彗星是編程技術 - 不是一種語言 - 專門設計用於解決在HTTP中無法推送的問題。傳統上,瀏覽器發送請求,網絡服務器創建一個響應,然後將其發送回客戶端。與彗星,Web服務器等待直到:

1)有一些更新的響應

2)定時器期滿

發送響應之前爲包括。這樣做的後果是,如果與Web服務器處於非活動連接狀態,會導致大量數據 - 這可能會導致性能問題。

另一種方法是使用HTTP來將客戶端程序在瀏覽器中運行,該瀏覽器使用不同的協議連接到聊天服務器。它可以通過ActiveX,Java或Flash來實現 - 所有這些都有很大的缺點 - 不僅僅是可移植性。

有幾個使用PHP和JavaScript的預先編寫的解決方案 - 提示 - 如果文檔沒有提到Naggle,那麼他們可能沒有考慮到可伸縮性/性能。

C.

0

這取決於你猜我有多少用戶。它會在你沒有很多用戶時工作(這是他們過去的做法)。但在我看來,聊天並不是實時的,因爲您可能會延遲x秒(輪詢間隔)。

對於大量的併發用戶,輪詢模型不會擴展。那麼你應該真的看看非阻塞的長輪詢(至少)。我認爲如果可能的話,您應該研究非阻塞性的長輪詢技術,因爲這是大型網站如何進行實時應用。但是你的服務器應該允許你安裝其他的編程語言,因爲PHP不適合這種技術。