【问题标题】:How to see how many people are on your site and store as variable? [duplicate]如何查看您的网站上有多少人并将其存储为变量? [复制]
【发布时间】:2014-08-06 22:36:12
【问题描述】:

我见过很多在线工具,用于跟踪目前/曾经访问过网站的人数。

我想知道怎么做,所以不需要第三方网站。我希望能够计算当前网站上有多少人,并将其在全球范围内更新给网站上的每个人。

示例:客户端 1 访问我的站点(当前:站点上的 01 个用户)然后客户端 2 连接,现在两个客户端都将更新计数器(当前:站点上的 02 个用户)。

我希望将其存储为变量的原因是当网站上有一定数量的人时发出通知。示例:网站上有 50 人或更多人!

如果可能的话,我想主要使用 PHP、SQL 和/或 JS/jQuery。我不确定从哪里开始,但我正在考虑使用带有 PHP 的文本文档更新它,然后使用 jQuery.load()

【问题讨论】:

  • 为此,您可以将会话系统切换到 PHP 中的自定义处理程序,然后将此数据存储在数据库中。然后,网站上的人数是过去 10 分钟内看到的用户的COUNT()(或您希望使用的任何其他数字)。
  • Marc 在上述链接上的解决方案比我的建议要容易一些,试试看?

标签: php


【解决方案1】:

这与聊天室实现没有什么不同。聊天室显示所有参与者,而您只对访问者的数量感兴趣。

一种简单的入门方法是使用 Firebase (https://www.firebase.com/)。有趣的是,您不必为存储/实时通知等构建基础架构。

【讨论】:

    【解决方案2】:

    问题更为根本——这取决于您所说的“在网站上”是什么意思。如果您的意思是浏览器请求了一个页面,那么从技术上讲,答案几乎总是为零,因为一旦请求完成,那个人就不再“在网站上”了。

    但是,如果您的意思是仅仅查看您的网站“很重要”,那么您的问题是有道理的,但由于多种原因(例如:机器人、本地缓存、代理缓存服务器、共享连接、并行连接等)

    但是,如果您坚持估算“积极”使用您网站的用户数量,则您需要对他们在“徘徊”到另一个网站或关闭浏览之前可能查看页面的时间做出一些假设/标签或干脆走开。您还必须对什么是用户做出一些假设:连接、IP 地址、会话、浏览器等。

    【讨论】:

    • 通常“在网站上”表示“在最后 X 分钟内看到”。合适的时间可能会有所不同 - 可能是五分钟左右?
    【解决方案3】:

    MySQL(您必须自己构建表,但这里是基础知识)。

    在数据库上创建一个包含 3 列的表

    表名:last_seen

    table columns:
    id primary, int(11) auto increment
    session_id, varchar(255) unique
    timestamp, int(11) (make sure this is indexed as well for fast lookups)
    

    现在创建一个表来记录在线用户的数量:

    table name: online_users
    
    id , int(11) primary, autoincrement
    online int(11) index
    

    现在是代码:

    1. 使用php的time()为每个用户设置一个带有请求时间戳的会话。 1个。将会话 ID 和时间戳存储到数据库中。
    2. 通过使用time() 覆盖会话变量来更新每个请求的会话 2个。更新数据库中用户会话 ID 的值。
    3. 创建一个每 1 分钟运行一次的 cronjob。并运行以下 php 代码
    4. 创建 ajax 文件以将 json 返回到 jQuery
    5. 编写jQuery

    php cronjob

    //cronjob
    
    $mysqli = new mysqli( your connection variables );
    
    $query = $mysqli->query("SELECT SUM(COUNT *)as online_users FROM FROM last_seen where timestamp > DATE_SUB(NOW(), INTERVAL 1 MINUTE");
    if($query->num_rows > 0){
        while($row = $query->fetch_assoc()){
            $onlineusers = (int)$row['online_users'];
        }
        $query = $mysqli->query("SELECT * FROM online_users WHERE 1;");
        if($query->num_rows == 0){
            //we have to insert
            $stmt = $mysqli->prepare("INSERT INTO online_users (online) VALUES (?)");
            $stmt->bind_param('i',$onlineusers);
            $stmt->execute();
            $stmt->close();
        }else{
            //we can just update
            $stmt = $myqli->prepare("UPDATE online_users SET online = ? WHERE id='1';");
            $stmt->bind_param('i',$online);
            $stmt->execute();
            $stmt->close();
        }
    }
    

    AJAX 脚本

       //ajax file
       $mysqli = new mysqli( your connection variables );
       $query = $mysqli->query("SELECT online FROM online_users WHERE id='1';");
       while($row = $query->fetch_assoc()){
            $result = $row['online'];
       }
       die(json_encode(array('online_users'=>$result)));
    

    jQuery $.getJson

    $(function(){
        $.getJSON('/path/to/ajaxfile.php',function(data){
            var online_users = data.online_users;
            $('#online-users').html(online_users);
        })
    })
    

    【讨论】:

    • 嗯,很有趣的解决方案
    • 嗯,浪费我的时间来回答它。
    【解决方案4】:

    虽然从技术上讲您可以自己实现它,但您为什么要这样做?专注于为网站增加额外价值的东西对于使用它的人来说是最重要的。

    改用Google Analytics

    通过 GA 执行此操作的优点是您可以节省服务器资源,并且这样做不需要维护任何额外的代码开销。它会随着时间的推移跟踪其他数据,您可以设置其他自定义事件、电子商务跟踪、目标渠道等等。

    Google 实时监控: https://www.youtube.com/watch?v=5zY7m5s4SPU

    Google 自定义提醒可以通过电子邮件或短信通知您预定义的事件。

    创建自定义警报以监控您的数据的统计变化 这对你很重要。例如,您可能想知道何时 与前一天相比,跳出率增加了 5% 以上,或 当收入与同一天相比下降 10% 以上时 一年前。

    测量您使用的时间段内的正常变化。如果一个 从一周到另一周的正常波动是 5%,那么你可能想要 知道波动何时超过 6% 或 7%。

    尽早发现可能预示新趋势或新趋势的变化 问题让你做好准备或做出适当的反应。例如,如果 流量突然增加,你可以关注一下 看看它是异常还是趋势的开始。如果有一个 趋势发展,您可能需要更多服务器容量或更多库存 手。如果跳出率开始增加,可能会出现不一致 在您的广告和着陆页之间,或重要的号召性用语可能 被新设计所掩盖。

    配置您的警报以发送电子邮件和/或短信

    在 Google Analytics 中设置自定义提醒:

    登录 Google Analytics 后:

    1. 转到管理
    2. 然后在视图下(最右列)选择自定义警报
    3. 单击新警报
    4. 给它一个名字,超过 50 位访问者
    5. 适用于所有访客
    6. 会话时提醒我
    7. 大于 50

    【讨论】:

    • 完全不了解电子商务的当前趋势。人们喜欢看到有多少其他人在线。事实。如果您使用服务器端脚本在设定的时间间隔内预先计算它,则它不会占用大量资源。这些天从数据库中读取它非常便宜,查询缓存等等。
    • 我必须生活在一块岩石下,自 2000 年初以来,我还没有看到网站闪现实时用户访问者。 FB 会这样做,但它会向您显示实际的社会相关信息,您认识的人。那里有上下文。在电子商务网站上显示无意义的匿名访问者就像向司机提供今天有多少人在这条路上开车的统计数据 - 没人关心。
    • 我订阅了学术和技术新闻组,所以我有点领先。据说 Ebay 正在 beta 测试一个新的 websocket 驱动平台,该平台具有“用户浏览本次拍卖”显示和与卖家的实时问答。
    • 旧的又是新的,并不代表比原来的好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多