Php /使用ajax自动更新客户端

php/using ajax to automatically update the client side

本文关键字:更新 客户端 ajax 使用 Php      更新时间:2023-09-26

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

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

我的第一个问题是,做这个功能的最好方法是什么,这样网站就可以总是显示这个数据的最新或几乎最新的价值?

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

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

提供的任何代码或示例都将非常感激。

您当然可以使用AJAX进行随时间分散的更新,但是如果您想每秒钟连接到服务器,我建议不要这样做。

这里有几个选项:

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

  • 或者,你可能想看看WebSockets或支持WebSockets的框架,如Meteor

您可以使用简单的长轮询。

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

如果计数器的值发生了变化,那么立即返回更新后的值