2012-02-04 58 views
8

我正在创建一个Web应用程序,需要一个通知系统。我将如何设置我的服务器以从mySQL数据库提取数据,然后将其推送到浏览器。我绝对有想法如何做到这一点。如果有人能够帮助,那将非常感谢!非常感谢!PHP - AJAX jQuery服务器“推”系统

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

回答

13

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

从您的网站内部,每隔几秒钟(或任何间隔最适合您的情况)运行一个计时器的JavaScript函数。

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

该JavaScript函数调用一个AJAX调用Web服务器上的Web服务(更多的在一秒钟)。

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

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

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

+0

非常好的概述。 – 2012-02-04 04:28:08

+2

+1此外,请参阅[推送](http://pusher.com/),[长轮询](https://en.wikipedia.org/wiki/Push_technology#Long_polling) – drew010 2012-02-04 04:31:20

+0

非常感谢!我一直在互联网上试图找到这个地方。非常彻底和伟大的想法。从来没有想过这个,看着Facebook的网络请求,那就是他们做的。每219毫秒是确切的。最后一个问题,使用这种方法,是否有任何方法让服务器在数百万次的请求运行多年后陷入沉重的困境?谢谢! – 2012-02-04 04:43:21

7

您可以为您的网站使用websockets和优雅的退化为不支持websockets的浏览器进行长时间投票回退而为您的网站创建推送通知服务。这确实需要一定数量的技术/编程知识。

这一些好的资源是: http://socket.io(它使用Node.js的后端的网络套接字和处理退化) http://pusherapp.com(如果你不想来翻去维护自己的服务商业解决方案)

对于支持WebSockets的浏览器的列表,你可以搜索“caniuse” - 这提供了极大的细节,通过浏览器版本支持

注意的特点:对于数百万用户的应用,如Facebook,我会假设他们已经权衡了为500万以上同步用户和合作伙伴运行websockets的优势包括在连接到数百万个套接字的所有节点上保持数据一致将会太多。我可以想象,在套接字系统上执行该操作会是一个逻辑噩梦,而不是基本动作类似于SQL的基础结构。虽然我不能代表他们发言,但这只是我的假设。然而,你会惊讶有多少网站最近一直在使用推送和轮询系统:)