2012-01-28 74 views
0

只有在昨天,我問了我的一位朋友,他將如何通過Web服務器模擬兩個客戶端之間的直接通信渠道,以創建聊天應用程序,但僅使用PHP/MySQL/JavaScript。PHP套接字 - 我需要與他們一起工作?

他告訴我做這件事的最好方法是使用SOCKETS,這個術語在那之前我只聽說過。今天早上我開始研究它,以創建我的聊天應用程序,但我很快就開始相信它並不像我希望的那麼容易。所以我的問題是:如果我沒有訪問我自己的服務器(我有一個域名託管在共享服務器上,我也用於測試目的),我仍然可以使用套接字來實現我的目標嗎?如果是這樣,究竟如何? (請理解我對這個想法完全陌生) 如果沒有,還有什麼其他方式來完成溝通渠道? 到目前爲止,我唯一的想法是簡單地嚮應用程序將存儲的Web服務器發送定期請求(AJAX),並請求任何新消息(如果有的話)。但這似乎不太可行。

在此先感謝您的幫助!

回答

3

我認爲你的朋友正在努力實現的是爲你的聊天網站實施Comet。

假設他讓你使用PHP套接字作爲守護進程,我非常懷疑共享主機提供商會讓你這樣做。

您可以嘗試掛上PHP腳本,直到有數據可用。但是,由於PHP服務器無法確定客戶端是否仍處於連接狀態,因此這將快速佔用基於CGI的服務器上的資源。我從經驗得到的這個結論。

對於這些類型的東西,我強烈建議你得到一個專用的服務器或VPS,並將其寫入類似socket.io的東西,它可以自動處理客戶端和服務器端的所有通信問題。 PHP,MYSQL和派生服務請求的服務器通常是實施Comet的最差情況,因爲它們會產生相當多的開銷並且不可擴展。

如果您無法負擔運行您自己的Comet服務器,那麼輪詢可能是您唯一的選擇。這將是資源最密集和響應最少的。

+0

謝謝你的解釋。我對這個概念也有點模糊,你確認需要VPS或專用服務確認了我的懷疑。 +1 – Phix 2012-01-28 09:10:24

+0

感謝您的參與。你在我身上拋出了一些非常討厭的術語:),所以我想我理解你所寫的50%。但我認爲我至少得到了必要的東西:我真的需要一個VPS或專用的服務器,我可以在node.js上運行socket.io。 – 2012-01-28 09:29:13

相關問題