需要build议转换我的应用程序,以便实时更新

我有一个Web应用程序,它只是简单地将我们的想法展示给less数人。 它需要更新的信息,所以我用jQuery和PHP使用一个快速和肮脏的短轮询技术把我们的演示放在一起。 性能并不重要,因为在任何时候只有几个人访问这个演示。

该应用程序基本上是一个实时队列,从一个Android应用程序提供项目。 现在我有android发送POST数据到一个API添加一个logging到数据库。 然后,我使用短轮询,以保持队列更新的事物(不理想,我知道)。

现在演示已经结束,并且有很大的兴趣,我的任务是这个应用程序必须能够扩展到我估计的每天大约2500个客户端的连接(500个商店w /多达5个浏览器所有的时间连接),在未来一年左右。

为了使这成为现实,我一直在阅读实现这个应用程序的各种方式,以及使用像Comet这样的长轮询技术。 现在我的脑袋里有了各种各样的select。 我曾经看过像Pusher这样的服务,但是我们真的想尽量减less每月的成本,所以这只是最后的select。 Node.js似乎是stream行的选项,但是这将需要我重写我的整个应用程序,不是吗?

即使我使用像Node.js这样的东西,我也不知道如何处理来自android应用程序的传入POST数据,并让它更新数据库并将其发送到客户端浏览器。

实时队列只是Web应用程序的一部分,其余部分可以在不需要任何实时function的情况下完成。 如果我使用node.js,我可以在node.js中只写队列,并使用更传统的LAMP堆栈运行网站的其余部分?

我确实有控制在商店中使用哪些浏览器的优势(Chrome),所以我并不需要担心传统的浏览器支持。

真的任何意见,可以引导我在正确的方向将不胜感激。 似乎有很多的select,但我不知道哪一个是最适合我的情况。

你说得对,因为Javascript的asynchronous特性,node.js更适合被动的API和执行基于事件的过程。

但是,这并不是说你不能在PHP中实现相同的效果。 虽然我是一个node.js的粉丝和倡导者,但是听起来你已经用你select的语言做了大量的工作,而且我觉得如果有一种方法可以用PHP来获得这个function,那么你就会去做。 将应用程序跨多种语言/框架拆分为一个function听起来不是最好的想法。

您的主要关注似乎是投票。 具体而言:2500个用户同时长时间轮询。 最明显的出路是你采用HTML5 WebSockets 。 图书馆存在实施这个在PHP如棘轮 。 每个用户将有一个连接到您的中央服务器使用WebSocket。 通过这种连接,每个客户端都可以向服务器发送数据和从服务器接收数据。 服务器作为这个链中的中介步骤,可以随意将数据从一个客户端传递到另一个客户端,包括存储数据。

你可能想知道如何比长轮询更可扩展。 在这里有巨大的性能改进的文章。 它归结为websockets只发送事件实际发生时的数据,而不是连续的“民意调查”。