2013-01-11 45 views
6

我们希望制作一个实时价格变动系统,以便能够看到与竞争对手价格相对于我们产品价格的差异。实现推送通知系统的最佳方式

我们没有使用Javascript和PHP推送通知/ COMET系统的经验。如果你不介意,我想获得你的经验,关于这种技术的建议。所以这里是我的问题:

  • 做这样的系统最好的办法是什么?
  • 我们是经验丰富的PHP开发人员,PHP也适合这项任务吗?
  • 如果你知道任何能够做到这一点的项目或解决方案(开源或商业),请分享一下吗?
+1

您是否正在寻找一种适用于各种浏览器的解决方案,包括IE的旧版本或者您可以使用最新技术的最佳实用方法? –

+0

无关紧要,它可能是我们将在总部使用的任何浏览器。 –

回答

2
  1. 这里是我们使用的方法。 Javascript发送常规的AJAX请求到PHP文件。 PHP文件使数据库查询,如果发现,只需睡0.5秒(或1秒),然后再次进行数据库查询。如果30秒过去了,并且数据库中仍然没有新的东西(这是在HTTP超时发生之前给出输出所需要的),那么它会输出一些东西(例如注意到发现的东西)。在从最后一个查询接收到输出后,Javascript立即启动另一个查询。 Javascript始终跟踪彗星正在监视的数据库表的最后一个ID。这用于仅查询大于我们所见过的最后一个ID的数据库行。
  2. 是的PHP是合适的。只记得一件重要的事情! 在进入彗星循环之前,您需要关闭所有打开的会话。 PHP使用会话锁定来防止两个线程同时写入同一个会话。如果你忘记关闭会话,所有其他线程将被锁定(如浏览网站将不可能)。
  3. 我可以建议我们使用的开源PHP框架。它叫Stingle。它有坚实的生产准备Comet插件。
+1

这是对AJAX轮询的很好的解释。但这不属于Comet保护伞,所以它不是Comet解决方案。 – leggetter

1

尝试使用socket.io,无需发送请求从客户端到服务器获取数据,在服务器端只需使用套接字发送数据,客户端就会获取数据。 只是为了避免发出http请求通知,因为通知几乎是实时的。