PHP Jquery: 聊天系统,什么是最理想的框架?

6
我想在我的网站上实现一个聊天系统,功能与Facebook Chat非常相似。聊天将基于一对一的方式进行。
我知道如何使用PHP、MySQL和JQuery构建聊天系统。但是我担心长期来看它无法扩展到大量用户。
使用JQuery,我需要每秒发送请求以更新聊天窗口,或者如果用户正在向另一个用户发送请求聊天。随着用户数量随时间增加,这将导致服务器负载过重。
有人告诉过我,使用PHP并不是理想的解决方案,我应该研究一下comet编程,这是我从未尝试过的。
我的问题是,是否有预构建的框架可以使用,或者更好的构建方法?
我听说过NodeJs和APE,但我的服务器不支持它们。
谢谢你们。
编辑:与我的服务器管理员交流后,我可能会更改我的操作系统,以便运行NodeJS。Nodejs在可扩展性方面如何表现,它能满足我的需求吗?

你的服务器支持哪些其他技术? - generalhenry
也许 PHP 非阻塞 IO => http://thethoughtlab.blogspot.com/2007/04/non-blocking-io-with-php-mio.html。我还没有尝试过这个,因为我喜欢 node.js,但它可能有效... - Alfred
支持的编程语言有 C、PHP 和 Python 2.4。我认为 Node.js 好用吗?如果我更改服务器操作系统,它就能正常工作。 - LazyDeveloper
2个回答

5

PHP和Comet并不是互斥的。Comet只是一种服务器推送技术,因此您不必每秒轮询。您可以在PHP和JS中实现Comet,它不是一种单独的编程语言。

尽管如此:我不建议自己编写聊天程序,除非您需要非常特定的功能。这是耗时容易出错的。使用其中一个预制解决方案,例如:

http://www.phpfreechat.net/

或者Java IRC聊天室。Google了解更多。

2
没有一个好的预制解决方案能够很好地扩展且廉价。自己动手做吧。使用nowjs在12行内创建聊天。制作一个聊天室相当简单。 - Raynos

3

正如Rok Kralj所说,彗星是一种范例,可以应用于不同的技术。如果您想深入了解此技术,请参考PHP & Comet问题。

普遍认为,PHP作为实时技术的可扩展性并不太好。Facebook是一个PHP公司(尽管最终将他们的PHP编译成C(或可能是C ++)以提高效率)。最常见的解决方案是使用专用的实时技术进行实时通信,并将其保留在Web服务器之外。

就技术选择而言,我会考虑WebSockets,因为它们已成为实时双向通信的标准。一些“彗星”服务器也使用WebSockets作为传输方式,并针对旧版浏览器回退到效率较低的HTTP流或HTTP长轮询。

如果您考虑使用托管服务,并且不想仅限于聊天功能,希望在某些时候添加实时通知、可视化协作或游戏,则我所在的http://pusher.com提供了一个托管实时消息服务,您可以轻松地实现您的聊天功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接