php / javascript - 使用ajax自动更新客户端

时间:2013-04-02 23:12:38

标签: php javascript ajax web-services jquery

我使用PHP编写网页的服务器端,并使用javascript构建客户端。

网站上有一个div,用于显示从服务器端收到的数据,例如,假设显示数据库中当前的注册用户数。此数字将在未知时间段内持续变化。例如,数字可以在10小时内相同,并且可以在10分钟内增加1000。

我的第一个问题是,执行此功能的最佳方法是什么,以便网站始终可以显示此数据的最新或近乎最新价值?

我原来的方法是使用Javascript AJAX并用setInterval(1000)(-1秒)包装来向服务器端发送Ajax请求。但是我不确定这对于客户端来说是否太重(因为javascript是单线程的,如果每1秒内运行一个函数,它可能会很慢)甚至服务器端(例如,如果有数百个用户打开这个网站数百个请求将被发送到服务器端)。这样可以吗?

我的第二个问题是,如果这不是一个好方法,我还能做些什么来实现同样的目标。我正在考虑使用相反的方式。例如,如果服务器端有更新,那么在服务器端使用PHP将此更新推送到客户端,甚至使用PHP脚本直接更改HTML中显示的数据。这可能吗?如果是的话,这是一个好方法吗?

我们非常感谢所提供的任何代码或示例。

2 个答案:

答案 0 :(得分:0)

您可以使用简单的long polling

客户端请求脚本"/counter?oldvalue=...&timestamp=...。如果没有更改,服务器不会立即返回值,而是最多30秒的空闲时间。

如果计数器值发生变化,则立即返回更新后的值。

答案 1 :(得分:0)

您当然可以将AJAX用于随时间推移的更新,但如果您希望每隔一秒左右连接到您的服务器,我会建议不要这样做。

你有几个选择:

  • 正如@Kay已经提到的那样,long polling可能是一种选择。

  • 或者,您可能希望查看WebSockets或支持WebSockets的框架,例如Meteor