【问题标题】:PHP - AJAX jQuery Server "Push" SystemPHP - AJAX jQuery 服务器“推送”系统
【发布时间】:2012-02-26 15:23:04
【问题描述】:

我正在创建一个需要实时通知系统的网络应用。我将如何设置我的服务器以从 mySQL 数据库中提取数据,然后将其推送到浏览器。我绝对 知道如何做到这一点。如果有人可以提供帮助,将不胜感激!太感谢了!

编辑:我可能应该更具体一些,我正在提取数据,因为 XYZ 最近创建了一个帐户,XZY 最近...非常感谢!

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

    您无法将数据推送到浏览器,但您可以设置网页每隔几秒轮询一次服务器以获取更新。一个示例设置是:

    在您的网站中,有一个 JavaScript 函数,每隔几秒(或任何最适合您情况的时间间隔)在计时器上运行一次。

    在页面加载时启动该计时器。

    该 javascript 函数调用对您的网络服务器上的网络服务的 AJAX 调用(稍后会详细介绍)。

    在服务器端,您需要某种系统来跟踪这些事件并将它们存储在某个位置,例如带有时间戳的数据库表中。因此,例如当 XYZ 创建一个帐户时,该帐户将记录在数据库中的这个“事件”表中。

    然后,由 AJAX 调用调用的 Web 服务将对该表运行查询并检索自上次调用以来的所有条目。然后用这些结果更新网页。

    这显然不是 100% “实时”,因为根据您在 JS 计时器中设置的时间间隔会有一个小的延迟,但它非常接近。

    【讨论】:

    • +1 另外见Pusher,Long Polling
    • 非常感谢!我一直试图在互联网上到处找到这个。非常彻底和伟大的想法。从来没有想过这一点,看看 Facebook 中的网络请求,这就是他们所做的。准确地说,每 219 毫秒。最后一个问题,使用这种方法,有没有什么办法让服务器在运行了数年的数百万请求后严重陷入困境?谢谢!
    • 服务器瘫痪的可能性主要与您的网络服务的参与程度以及在任何给定时刻的流量有多大有关。换句话说,如果该服务需要多次查找或其他繁重的处理,并且您以高频率轮询该服务,那么您的服务器可能会陷入困境。但是如果你只是做一个简单的单个查询并返回结果,假设你的数据库服务器上没有很大的负载,你应该没问题。
    • 好的,谢谢,我非常怀疑我的服务器会陷入困境。
    【解决方案2】:

    您可以使用 websocket 为您的网站创建推送通知服务,并为不支持 websocket 的浏览器优雅降级为长轮询后备。这确实需要大量的技术/编程知识。

    一些很好的资源是: http://socket.io(它使用 node.js 后端作为 Web 套接字并处理降级) http://pusherapp.com(如果您不想滚动和维护自己的服务,这是一个商业解决方案)

    对于支持 websockets 的浏览器列表,您可以搜索“caniuse”——它提供了浏览器版本支持的功能的详细信息

    注意:对于像 Facebook 这样的数百万用户应用程序,我假设他们已经权衡了为 50 多万同时用户运行 websocket 的优势,并得出结论,在连接到数百万个套接字的所有节点之间保持数据一致将是太多了。我可以想象,在套接字系统上而不是在类似 sql 的基本操作基础设施上执行此操作将是一场逻辑噩梦。我不能代表他们发言,这只是我的假设。但是,您会惊讶于最近有多少网站在使用推送和轮询系统:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-27
      • 2010-11-27
      • 2012-01-21
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      相关资源
      最近更新 更多