新用户上线时自动刷新

时间:2010-05-29 09:16:24

标签: php javascript ajax

我在数据库中有一个包含所有活动用户的表。然后我有一个用户列表,需要刷新才能看到谁是最新的在线用户。 什么是解决这个问题的最佳方法? 用户列表始终只是active_users表中的人员。 谢谢你的阅读。

4 个答案:

答案 0 :(得分:3)

AJAX

您可以使用 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脚本取决于你...