0

我正在为一个客户端开发一个 Web 应用程序,该应用程序需要我知道当前在线的所有用户的姓名。整个应用程序是用 php 构建的,其中 jQuery 用于前端交付。但是,我发现我可以设置一个独立的 Node.js 服务器来持续监控用户。

我最初的设计让我在每个页面的顶部都包含一个查询脚本,用于检查数据库的更新。我将其升级为使用 $.post() 从服务 php 页面获取响应的 js。

我需要知道的是,如果我每次都使用 node.js 而不是标准的 mysql 访问,那么使用 node.js 会对性能产生什么样的影响??甚至可能吗?该应用程序将有 500 到 1000 人同时在线,所以我的客户强调性能。

此外,如果这样的解决方案是可行的,那么任何关于我应该如何实施它的帮助都将非常受欢迎。

4

2 回答 2

1

您要求的数字很难给出,因为它取决于您的系统,但是,如果您检查 web 的 node.js 基准测试,您会发现 node.js 在这种情况下明显优于 PHP 或其他 web 技术。
我推荐使用 socket.io 模块(你可以在他们的网站http://socket.io/上找到很多例子)。
如果您的主机支持 websockets,那么 socket.io 具有惊人的性能。我不知道的唯一变量是 mySql 的性能,因为大多数 node.js 开发人员都使用 nosql,例如 mongodb。

于 2013-05-20T21:51:27.200 回答
1

通过为此使用 Node.js,您可能会看到巨大的性能提升。在线用户列表可以很容易地保存在 Node.js 的内存中,您甚至根本不需要访问数据库。

当用户列表请求进来时,您可以将请求用户添加到用户列表数据结构中,然后返回列表。为每个用户保留最后访问时间。定期(每秒一次)运行一个函数setInterval以循环遍历列表并消除任何一段时间未请求列表的用户。

由于该列表将保存在 Node.js 进程的内存中,因此不会有数据库访问,并且请求将被非常快速地处理。

于 2013-05-20T21:44:13.103 回答