如何扩展我的聊天应用程序?

时间:2012-04-06 07:55:37

标签: php chat scalability

我有一个在php / mysql中实现的网站,托管在hostmonster(共享主机)。

我打算在我的网站中加入聊天功能,让用户可以互相聊天。有约。我网站上的1000个用户。 目前,我已经实现了一个ajax策略,该策略定期向服务器发送请求(例如,每4秒)以获取有关在线用户和消息的json响应。

这是发送请求的示例代码:

var timer, delay = 4000;

timer = setInterval(function(){
    $.ajax({
      type: 'POST',
      url: 'update.php?user_id=2',
      success: function(html){
        $('.chat_messages').append(html);
      }
    });
}, delay);

但是正如我所看到的,用户数量越多,每4秒钟的请求就越多,Apache服务器和数据库的负担就越大,无法提供响应。

所以我正在计划一个备用解决方案,它在服务器上没有任何开销。 我听说过像APE,Nginx,Node.js,StreamHub这样的服务器,它们使用COMET / reverse ajax技术来满足请求,并且对我的目的很有效。

但问题是,我没有权限在我的hostmonster cpanel上安装第三方服务器。 还有其他方法,比如HTML5网络套接字吗?

编辑:顺便说一下,如果有可行的解决方案,我也有兴趣在Java上重建我的应用程序。

1 个答案:

答案 0 :(得分:2)

当您想出要求每个用户4秒的新内容时,不会缩放。它甚至不适用于聊天应用程序,因为消息之间的延迟太长,导致聊天无法使用。

如果我是你,我会首先研究不需要任何(或很少)编程的插入式聊天解决方案。您通常只是在页面中插入一些JavaScript代码,而提供聊天的第三方会完成所有其他操作(提供文件,运行聊天服务器等等)。我没有使用任何可用的解决方案,所以我不推荐任何解决方案,但快速谷歌搜索产生了这个:https://www.meebo.com/websites/这应该让你大致了解我在说什么。

如果以上情况不适合您,那么您前面有一个相当大的项目。您需要做的是编写一个websocket服务器(然后是您的聊天应用程序)。如果我想解释如何对你这么做,我可以写一本关于它的书,所以我只想说:谷歌是你的朋友。你不是第一个需要这个的人。因此,搜索stackoverflow以获取提示,并且还有开源PHP websocket服务器(this being one)。

祝你好运。