我有一个聊天室,我想在此刻显示有多少人在此聊天。用户可以在有或没有注册的情况下加入会议室。
答案 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()));
?>