Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php/javascript-使用ajax自动更新客户端_Php_Javascript_Ajax_Web Services_Jquery - Fatal编程技术网

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

php/javascript-使用ajax自动更新客户端,php,javascript,ajax,web-services,jquery,Php,Javascript,Ajax,Web Services,Jquery,我使用PHP编写网页的服务器端,使用javascript构建客户端 网站上有一个div,显示从服务器端接收到的数据,例如,显示数据库中当前注册用户的数量。此数字将在未知时间段内不断变化。例如,这个数字在10小时内可能是相同的,在10分钟内可能会增加1000 我的第一个问题是,实现此功能的最佳方法是什么,这样网站就可以始终显示此数据的最新或几乎最新值 我最初的方法是使用Javascript-AJAX,并通过setInterval(1000)(-1秒)包装,将AJAX请求发送到服务器端。但我不确定这

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

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

我的第一个问题是,实现此功能的最佳方法是什么,这样网站就可以始终显示此数据的最新或几乎最新值

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

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

如能提供任何代码或示例,将不胜感激

您可以使用simple

客户端请求一个脚本
“/counter?oldvalue=…×tamp=…
。如果没有更改,服务器不会立即返回值,而是最多闲置30秒


如果计数器值发生更改,那么您将立即返回更新后的值。

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

您在这里有几个选项:

  • 正如@Kay已经提到的,
    长轮询
    可能是一种选择

  • 或者,您可能希望研究支持WebSocket的框架,如


在现代浏览器中,您可以使用。关于您的第一个问题:每秒发送一次AJAX调用对客户端来说可能不是一个很大的压力,但肯定会很快成为服务器的一个问题。想想看,每秒有1000个客户端ping您……这对您的服务器来说是一个很大的压力。