【问题标题】:PHP: active UsersPHP:活跃用户
【发布时间】:2013-02-27 04:03:15
【问题描述】:

我刚刚遇到了一个问题。我目前正在为学校开展一个项目,我希望在侧边栏中拥有所有活跃用户(类似于聊天,但不是)。

首先我想到了这个(伪代码):

<?php
    ...
    class user {
        //Some instance vars.

        public function __construct(){
            //Write username in a textfile/database
        }
        public function logout {
            //Delete username from textfile/database
        }
    }
    ...
?>

问题是:

1) 用户对象存储在$_SESSION[] 数组中。所以我不能使用魔术方法__destruct()。这就是我制作logout() 方法的原因。 (问题解决了^^)

2) 如果我们假设用户使用相同的 ID 在 2 台设备(例如笔记本电脑、智能手机)上登录并且他退出了一台设备上的会话,那么另一台设备也将被删除。

3) 用户可能不想按注销,而只是关闭浏览器窗口。我怎么知道他登出/退出会话。

我知道,PHP 不是这种任务的最佳编程语言,但我真的很想用 PHP 来做这个项目。如果这个问题已经被问过,我真的很抱歉,但我仔细搜索了所有相关问题,所有这些问题(或多或少)都与我的不同。

提前致谢:)

【问题讨论】:

标签: php login


【解决方案1】:

我认为更好的方法(也是通常采用的方法)是创建一个包含两列的表。用户 ID 和用户上次在网站上处于活动状态的时间。

您需要在登录时以及每次用户加载页面或在网站上执行某些重要操作时保持此表的最新状态。

要显示谁在线,您可以查询此表以查找在过去 N 秒/分钟内活跃的任何用户。

您可能希望添加一个“清理”作业,将用户从上次活动超过(大约 N)秒/分钟前的表中删除,以防止该表变得太大。

【讨论】:

    猜你喜欢
    • 2013-11-12
    • 2012-11-07
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多