最佳实现推送通知系统的方法

5
我们希望能够开发一个实时价格变化系统,以便与竞争对手的产品价格进行比较。
我们没有使用JavaScript和PHP的推送通知/COMET系统的经验。如果您不介意的话,我想听听您的经验和建议。以下是我的问题:
- 最佳的实现方式是什么? - 我们是有经验的PHP开发人员,那么PHP是否适合这个任务? - 如果您知道任何能够完成此任务的项目或解决方案(开源或商业),请分享一下。

1
你是在寻找一个能够在所有浏览器中运行的解决方案,包括IE的旧版本,还是使用最新技术的实际最佳方法? - N.B.
无所谓,可以使用我们总部的任何浏览器。 - Oğuz Çelikdemir
2个回答

2
以下是我们使用的方法。Javascript定期向PHP文件发送AJAX请求。PHP文件进行数据库查询,如果没有发现任何内容,则休眠0.5秒(或1秒),然后再次进行数据库查询。如果30秒过去了,在数据库中仍然没有发现任何新的内容(这是为了在HTTP超时发生之前提供输出),则输出一些内容(例如发现没有内容)。Javascript在接收到上一个查询的输出后立即开始另一个查询。Javascript始终跟踪comet正在监视的数据库表的最后一个ID。这用于仅查询大于我们所见过的最后一个ID的数据库行。
是的,PHP很合适。只记住一件重要的事情!在进入comet循环之前,您需要关闭所有打开的会话。 PHP使用会话锁定以防止两个线程同时写入同一会话。如果您忘记关闭会话,所有其他线程都将被锁定(例如无法浏览网站)。
我可以建议我们使用的开源PHP框架。它被称为Stingle。它具有可靠且可用于生产的Comet插件。

1
这是一个关于AJAX轮询的很好的解释。但它并不属于Comet范畴,因此不是Comet解决方案。 - leggetter

1
尝试使用socket.io,无需从客户端发送请求到服务器以获取数据,只需在服务器端使用socket发送数据,客户端将获取数据。仅在通知几乎实时的情况下避免进行HTTP请求。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接