2012-02-12 26 views
1

我想创建一个出价系统,用户可以在其中看到项目的当前价格。如果其他位置的其他用户在我之前出价,它应该自动更新我的浏览器中的出价。自动更新出价 - PHP/Ajax

我已阅读关于autoupdate JS + Ajax函数,但即使我放置5秒计时器来自动更新用户浏览器上的内容,它会不会通过每5秒发出一次ajax调用来在服务器上增加一些额外的负载?它的招标系统,使用户将有1-2秒内更新出价,所以如果我每隔1到2秒就会自动更新一次ajax调用,它会给服务器带来很大的负担。

所以我想知道有没有更好的方法来处理这种类型的东西? twitter/facebook如何更新用户的提要?

+1

看看这个答案 - http://stackoverflow.com/a/7132828/295508服务器推送方法或某种网络套接字系统应该为你工作 – JohnP 2012-02-12 13:18:43

回答

3

AJAX与否,招标系统总是有很高的要求,因为人们不断刷新页面以检查最新的投标信息。

你可以看看并尝试long polling。长轮询一种方法,您可以将数据从服务器“推送”到浏览器,以响应浏览器的HTTP请求。这是一个普通的HTTP连接。这可能会减少从用户发送到服务器的请求数量,但是您的用户和服务器之间仍然会有许多开放和活动的连接。

1

你会想看看长轮询。从本质上说,这是它如何工作的

  • 在你需要某种事件机制(与PHP没有probem)
  • 客户端(浏览器)服务器启动一个AJAX请求引用一个招标项目
  • 服务器检查如果出价发生变化,则返回请求
  • 如果不是,他等待一段时间(分钟范围),等待与此出价有关的事件
  • 如果发生此类事件,服务器将返回请求与信息,如果不是,他返回“没有出价”的请求信息
1

您也许能逃脱流模型...

每个JS客户端连接到服务器一次,并保持连接错误打开。随着新事件到达服务器,它们将实时广播到所有打开的连接。

这与Twitter用于发布推文的机制类似。

+0

你可以在任何地方展示我的任何例子吗?任何示例脚本? – 2012-02-12 13:34:57

+0

看看这个http://ajaxpatterns.org/HTTP_Streaming#Solution – Basic 2012-02-12 20:07:29