2012-01-28 47 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

相关问题