我在数据库中有一个包含所有活动用户的表。然后我有一个用户列表,需要刷新才能看到谁是最新的在线用户。 什么是解决这个问题的最佳方法? 用户列表始终只是active_users表中的人员。 谢谢你的阅读。
答案 0 :(得分:3)
您可以使用 AJAX 请求定期提取活跃用户列表并将其显示在您的网站上。
您可能希望缓存该列表一段时间在您的服务器上,以防您有很多用户经常请求它。
或者,如果列表很长,或者您决定在列表中添加大量HTML标记,您还可以定期轮询您的服务器以检查是否有更新(缓存) ...)自上次客户端更新列表以来的列表。回复将是一个简单的真或假,客户只需要在更改后请求新列表。
您还可以使用meta refresh tag来更新整个页面,如果您不介意iframe,也可以使用iframe。
一分钟后刷新:
<meta http-equiv="refresh" content="60" />
或者使用网址:
<meta http-equiv="refresh" content="60;url=http://site.com/list.php?counter=1" />
最后,您可以在列表末尾添加按钮或简单的链接,用户可以自行决定是否重新加载。
正如JoeGeeky在评论中指出的那样,对于性能和带宽的原因,您可能希望实现一个限制用户列表加载的最大次数的计数器。这适用于Ajax和Meta刷新标记。在javascript中,每次加载列表时都可以简单地增加一个变量,如果是元刷新标记,你可以在url中添加计数器作为get变量。
此外,这三种方法不会相互排斥,但应合并:使用 Ajax 为javascript激活的人员, > noscript标记中的元刷新iframe 作为禁用javascript(如stagas所述)的回退,以及手动更新的按钮或链接列表重新加载计数已达到。
答案 1 :(得分:2)
如果您的用户列表很短,例如,您只是显示最新的五个用户,我会使用Ajax进行简单轮询,以返回返回该数据的PHP脚本。
您可以根据需要调整轮询,
$(document).ready(function () {
function refreshUserlist () {
$.ajax({
url: "user_list.php",
success: function (data) {
// code to refresh your website with the info out of data
setTimeout(refreshUserlist, 5000);
}
});
}
refreshUserlist();
});
答案 2 :(得分:1)
我能想到的最简单的方法是你可以创建一个简单的php页面来列出数据,并使用jQuery .load()函数将php的html响应加载到div中
。$( “#DIVID”)负载( “活性-users.php”);
答案 3 :(得分:0)
创建一个php脚本来检索active_users列表并返回<ul>
列表。然后使用jQuery和setInterval()
使用$.ajax()
获取该列表,并使用$('#active_user_list').html(new_list_data)
每1-2分钟替换一次列表。这是它的样子(未经测试):
setInterval(function() {
$.ajax({ url: 'script_to_fetch_active_users_list.php', success: function(new_list_data) {
$('#active_user_list').html(new_list_data);
} });
}, 1000*120);
php脚本取决于你...