如何在此页面上吸引活跃的访问者?

时间:2017-02-05 14:16:32

标签: javascript php session routes yii2

我有一个聊天室,我想在此刻显示有多少人在此聊天。用户可以在有或没有注册的情况下加入会议室。

4 个答案:

答案 0 :(得分:1)

这在很大程度上取决于您实施聊天室的方式。 您可以为每个访问者分配聊天会话ID和超时,这些访问者随着时间的推移而过期并从列表中删除。 此列表将包含访问者的详细信息,包括计数。

答案 1 :(得分:1)

我想到了一个简单的想法(可以大量定制和改进):

1)通过具有唯一的每用户ID的AJAX调用定期调用PHP脚本(例如,每分钟一次)。像这样,例如:

var visitorCounter = function() {
    $.get('audience_checker.php', {
      id: get_random_id() // inspiration below 
    });
}

setInterval(visitorCounter, 60000); // it gets called every 60000 ms = 1 minute

获取灵感how to build a random ID generation here。或者使用IP地址。

2)现在使用时间戳在数据库中编写将$ _GET超全局变量存储ID 的PHP脚本。如果ID已存在,只需更新时间戳。

3)最后,另一个脚本 statistics.php 可以从数据库中选择那些不超过一分钟的数据,基于时间戳。

答案 2 :(得分:1)

当然将取决于您的聊天应用程序逻辑,但这是我用来计算应用程序中的用户的东西。这并不完美,因为如果他们没有注销,你就不会知道你的用户。 您可以添加新表来处理会话:

`id`, `expire`, `data`, `user_id`, `last_write`

然后更改配置以将会话保存到此表而不是文件中。

        'session' => [
        'class' => 'yii\web\DbSession',
        'writeCallback' => function ($session) {
            return [
                'user_id' => Yii::$app->user->id,
                'last_write' => time(),
            ];
        },
    ],

然后你可以检查最后5分钟的会话

希望有所帮助

答案 3 :(得分:-1)

列出当前站点中的所有活动会话:

<?php
    print_r(scandir(session_save_path()));
?>