PHP套接字 - 我需要使用它们吗?

时间:2012-01-28 08:52:15

标签: php javascript mysql sockets

仅在昨天,我问了我的一个朋友他将如何通过网络服务器模拟两个客户端之间的直接通信渠道,以创建聊天应用程序,但仅使用PHP / MySQL / JavaScript。 / p>

他告诉我,最好的办法就是使用SOCKETS,这个术语直到那时我才听说过。今天早上我开始研究它以创建我的聊天应用程序,但我很快就开始相信它并不像我希望的那么容易。

所以我的问题是:如果我无法访问自己的服务器(我在共享服务器上托管了一个域,我也用它来进行测试),我还可以使用套接字来实现我的目标吗?如果是这样,怎么样? (请理解我对这个想法完全陌生) 如果没有,还有什么其他方式来完成沟通渠道? 到目前为止,我唯一的想法是简单地向应用程序存储的Web服务器发送定期请求(AJAX),并请求任何新消息(如果有的话)。但这似乎不太可行。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

我认为你的朋友想要的是为你的聊天网站实施Comet。

假设他让你使用PHP套接字作为守护进程,我非常怀疑共享托管服务提供商会让你这样做。

您可以尝试挂起PHP脚本,直到有可用的数据。但是,这将很快消耗基于CGI的服务器上的资源,因为PHP服务器无法判断客户端是否仍然连接。我从经验中知道这一点。

对于这类事情,我强烈建议您使用专用服务器或VPS,并在socket.io之类的内容中编写后端,以便在客户端和服务器端自动处理所有通信问题。分叉为服务请求的PHP,MYSQL和服务器通常是实现Comet的最坏情况,因为它们会产生相当多的开销并且不可扩展。

如果您无法负担运行自己的Comet服务器的费用,那么轮询可能是您唯一的选择。这将是资源最密集且响应最少的。