【发布时间】:2013-04-02 23:12:37
【问题描述】:
我使用PHP编写网页的服务器端,并使用javascript构建客户端。
网站上有一个 div 会显示从服务器端接收到的数据,例如,假设显示数据库中当前注册用户的数量。此数字将在未知的时间段内不断变化。例如,数字可能在 10 小时内保持不变,而在 10 分钟内增加 1000。
我的第一个问题是,执行此功能的最佳方法是什么,以便网站始终显示此数据的最新或几乎最新值?
我最初的方法是使用 Javascript AJAX 并由 setInterval(1000)(-1 秒)包装,以将 Ajax 请求发送到服务器端。但是我不确定这对于客户端(因为javascript是单线程的,如果每1秒内运行一个函数可能会很慢)甚至服务器端(例如,如果数百个用户打开这个网站)并将数百个请求发送到服务器端)。那么这样可以吗?
我的第二个问题是,如果这不是一个好方法,我还能做些什么来实现相同的目标。我正在考虑使用另一种方式。例如,如果服务器端有更新,那么在服务器端使用 PHP 将更新推送到客户端,甚至使用 PHP 脚本直接更改 HTML 中显示的数据。这可能吗?如果是,这是一个好方法吗?
提供的任何代码或示例将不胜感激。
【问题讨论】:
-
在现代浏览器中,您可以使用Web Workers。
-
关于您的第一个问题:每秒发送一次 AJAX 调用可能不会对客户端造成很大压力,但肯定会很快成为服务器的问题。想想每秒有 1000 个客户端 ping 你……这对你的服务器来说是一个很大的压力。
标签: php javascript ajax web-services jquery