【发布时间】:2013-08-11 06:14:22
【问题描述】:
我有一个在数据库上运行查询并报告结果的网页。目前,该页面每 10 秒自动刷新一次,以显示(几乎)实时数据。
这可能是一种非常低效的方法,但目前我还不确定有什么替代方法。
我有哪些选项可以在 php 网页上显示实时数据?
【问题讨论】:
-
取决于你可以使用 websocket
我有一个在数据库上运行查询并报告结果的网页。目前,该页面每 10 秒自动刷新一次,以显示(几乎)实时数据。
这可能是一种非常低效的方法,但目前我还不确定有什么替代方法。
我有哪些选项可以在 php 网页上显示实时数据?
【问题讨论】:
你可以使用 node.js 和 socket.io。这是帮助您入门的好例子:
http://book.mixu.net/ch13.html
或者您可以使用ejabberd 和strophe js 库。
我将这两种解决方案都用于实时处理,我发现 node.js 和 socket.io 更容易实现。
【讨论】:
根据您的数据的用途和使用方式,我最近开始将数据显示功能放入单独的页面,然后在页面加载时使用 jquery 将这些页面加载到我的主页上的潜水中,然后重新加载 div如果需要尽快刷新,则使用计时器和重新加载功能,这样您的整个页面不会刷新,使其闪烁并变为空白,而是数据会得到很好的更新。
var paused = false,
auto_refresh = setInterval(
function()
{
if (paused) return false;
$('#mot').fadeOut('slow').load('motview.php?view1=$dayd&viewdate=1').fadeIn('slow');
$('#work').fadeOut('slow').load('workview.php?view1=$dayd&viewdate=1').fadeIn('slow');
$('#motday').fadeOut('slow').load('motdaylist.php? view1=$dayd&viewdate=1').fadeIn('slow');
$('#notelist').fadeOut('slow').load('notelist.php?dayd=$dayd').fadeIn('slow');
}, 60000);
$(document).ready(function(){
$('#mot').load('motview.php?view1=$dayd&viewdate=1');
$('#work').load('workview.php?view1=$dayd&viewdate=1');
$('#motday').load('motdaylist.php?view1=$dayd&viewdate=1');
$('#notelist').load('notelist.php?dayd=$dayd');
});
function reloaddivs()
{
$('#mot').load('motview.php?view1=$dayd&viewdate=1');
$('#work').load('workview.php?view1=$dayd&viewdate=1');
$('#motday').load('motdaylist.php?view1=$dayd&viewdate=1');
$('#notelist').load('notelist.php?dayd=$dayd');
};
上面我用来在一个页面上显示 4 大量数据,所有这些数据都在计时器上很好地更新,或者在我通过调用 reloaddivs 与页面交互之后
【讨论】:
仔细检查您的页面,以确定每 10 秒更新一次的确切数据是什么 - 可能不是整个页面(菜单、导航、页眉、页脚)。
每 10 分钟或每小时缓存一次所有数据,尤其是当驱动这些元素的数据被从数据库中拖出时。
然后包括包含动态数据的面板。
更好的办法是使用 Ajax 加载动态数据,每 n 秒刷新一次。
【讨论】: