【问题标题】:Best way to implement a push notification systems实现推送通知系统的最佳方式
【发布时间】:2012-12-26 02:10:08
【问题描述】:

我们希望建立一个实时价格更改系统,以便能够查看竞争对手价格与我们产品价格之间的差异。

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

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

【问题讨论】:

  • 您是否正在寻找适用于所有浏览器的解决方案,包括 IE 的旧版本或您可以使用最新技术的实际最佳方法?
  • 没关系,可以是我们总部使用的任何浏览器。

标签: php javascript push comet


【解决方案1】:
  1. 这是我们使用的方法。 Javascript 向 PHP 文件发送常规 AJAX 请求。 PHP 文件进行数据库查询,如果发现,只需休眠 0.5 秒(或 1 秒),然后再次进行数据库查询。如果 30 秒过去了,但在数据库中仍然没有发现任何新内容(这是在 HTTP 超时发生之前给出输出所必需的),那么它会输出一些东西(比如发现发现)。 Javascript 在收到上一个查询的输出后立即启动另一个查询。 Javascript 始终跟踪彗星正在监视的数据库表的最后一个 ID。这用于仅查询大于我们看到的最后一个 ID 的数据库行。
  2. 是的,PHP 是合适的。只记得一件重要的事情! 在进入彗星循环之前,您需要关闭所有打开的会话。 PHP 使用会话锁定来防止两个线程同时写入同一个会话。如果您忘记关闭会话,所有其他线程都将被锁定(例如无法浏览网站)。
  3. 我可以建议我们使用的开源 PHP 框架。它叫Stingle。它具有可靠且可用于生产的 Comet 插件。

【讨论】:

  • 这是对 AJAX 轮询的一个很好的解释。但这不属于 Comet 保护伞,因此它不是 Comet 解决方案。
【解决方案2】:

尝试使用 socket.io ,不需要从客户端向服务器发送请求来获取数据,服务器端只需使用套接字发送数据,客户端将获取数据。 只是避免发出 http 请求通知,因为通知几乎是实时的。

【讨论】:

    猜你喜欢
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 2019-02-05
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    相关资源
    最近更新 更多