这就是我所知道的:
Ajax poll是一种旧的,带宽消耗且不可扩展的方式。它每X秒向服务器发出一个新数据请求。这意味着每X秒进行一次数据库查询* number_of_connected_users。
反向Ajax及其应用程序之一(comet)需要一个定制的Web服务器或专用的彗星服务器,它可以处理number_of_connected_users长时间的http连接数量。
我的实际服务器是:1个Xeon CPU,1 GB RAM和1 Gb / s带宽。服务器是虚拟机(因此具有高度可扩展性)。
我需要一个可以随服务器和未来不断增长的用户群扩展的解决方案。
我的怀疑是:
ajax轮询方法对我的带宽使用有多大影响?
我可以通过哪种方式优化ajax轮询,仅在必要时才进行数据库查询?
彗星服务器可以在网络服务器(Apache)的同一台机器上运行吗?
使用彗星的方式,我仍然需要一个间隔来对数据库进行查询,然后发送响应,那么实时在哪里?
使用我的实际服务器,彗星方式可以工作吗?
提前谢谢。
答案 0 :(得分:1)
如果你可以逃脱,你永远不应该使用民意调查。它阻塞了服务器和客户端上的资源。服务器必须通过轮询进行更多数据库请求,更多检查以查看数据是否已更改。
ajax轮询方法还会生成更多不必要的请求。通过轮询,您可以使用内存和CPU。 Comet(如果操作正确)仅使用内存。
彗星服务器可能无法在Apache下运行。 Apache似乎不是为长时间运行的请求而设计的。我建议用ruby(使用EventMachine)an example,Python(使用Twisted)或C语言实现你的彗星服务器。
我不明白为什么你需要有间隔来进行数据库查询。当您进行更改时,您可以告诉您的彗星服务器通知必要的用户该更改。
答案 1 :(得分:0)
我正在用PHP编写我的网站。
那么,我需要运行一个服务器(如扭曲)并在python中编写我的聊天应用程序? 这个应用程序应该处理传入的ajax请求并将新数据推送到客户端。
如果我理解得很好,这种方法不需要数据库,对吗?