可扩展的PHP(基于AJAX)聊天系统的最佳方法

时间:2010-03-19 07:24:04

标签: php comet chat scalable

我正在为公司构建一个聊天系统,我想知道构建系统的最佳方法是什么?

我们当前的设置是带有PHP和Memcacheq的Nginx HTTP服务器(作为将聊天消息附加到用户自己的队列的消息队列)。然后我们轮询Nginx服务器(通过Comet样式请求)并查询消息队列以获取更新。

使用诸如Memcacheq之类的消息队列来处理具有用户到用户和站点范围的聊天的聊天系统或者最好只是坚持使用MySQL是不是一个好主意?

谢谢!

4 个答案:

答案 0 :(得分:3)

Memcache仅在您有一些陈旧数据(或糟糕的数据库设计以增加查询执行时间)时才有用。在您的情况下(聊天系统),数据将是新鲜的,并且添加Memcache只能使我看到的事情变得复杂(读取降低性能)。把memcache想象成mysql和php之间的中间件(在RAM上)。如果数据是陈旧的,则跳转时间会减少,因为PHP不必转到mysql但是在新数据的情况下,负载实际上会增加(因为memcache还需要从PHP获取更改)。

总之,我不建议在聊天系统中使用memcache。建议更多地搜索网页。 http://blog.tech.stylefeeder.com/2008/08/22/memcached-vs-mysql/

上的好帖子

答案 1 :(得分:1)

我希望Memcacheq的表现要比MySQL好得多。

答案 2 :(得分:1)

Memcacheq是一个很好的工具,可以帮助避免网络请求的延迟。 它可以充当php和mysql之间的缓冲区,但它不是mysql的替代品。 Memcacheq还可以使扩展更容易,因为可能有多个分布式消息使用者。

我建议把它放在高负载的php请求之间,将数据保存到mysql并进行耗时的操作。这将加速用户的页面加载,并将从长请求中释放您的Web服务器。

Memcacheq非常快。它不需要太多资源

答案 3 :(得分:0)

试试这个:http://pushmodule.slact.net/。 Nginx将处理彗星的事情,你的所有php应用程序都需要做的是向模块发送HTTP请求。