【发布时间】:2012-02-27 10:46:07
【问题描述】:
我已经编写了一个脚本来输出我网站上的活跃用户....
其中一部分是计算日志中的唯一 ips,因为我用来拆分行/数据的数组会在 5 分钟后从数组列表中卸载活动用户.....
但是“现在 3 个在线用户”计数无法正常工作.....
它有点工作....当有人查看一个页面时,它说有 1 个用户
假设我查看了一个页面.... 1 位访问者
然后用户 2 浏览了一个页面 .... 2 个访问者
但是如果我再查看另一个页面,它会显示 3 个用户.....
即使我对两个页面请求使用相同的 ip....
这是我的代码
$data = file_get_contents('active-log.txt');
$break = "\r\n";
$lines = explode($break, $data);
foreach ($lines as $key => $value) {
$active_ip[] = $lines[$key][1];
}
$active_ip_count = array_unique($active_ip);
$active_users = (count($active_ip_count));
$active_users 是我用来显示一次在线的唯一身份访问者数量的变量
提前感谢任何可以帮助我的人,谢谢
....
编辑
.....
这里是保存的日志示例......
1328469393|157.55.39.84|g-book
1328469398|157.55.39.84|downloads
1328469400|157.55.39.84|badger
1328469404|157.55.39.84|home
1328469408|157.55.39.84|boneyard-dogs
第一部分是时间戳(从数组中删除行,如果时间戳早于 5 分钟......这工作正常)
第二部分是ip
第三部分是页面查看,新行是用 \r\n
创建的$lines[$key][1] 是每行中每个ip的变量....
由于我不是一个 php 专家,所以在编写脚本时,我会在开发过程中对它们进行大量测试,并且每次添加新的脚本行时,我都会回显数据,以检查我希望的结果,以确保我做到了没有错误......
这是一段我没有粘贴的代码,因为我认为没有必要......
foreach($lines as $k=>$v) {
$lines[$k] = explode("|", $v); }
// echo $lines[0][0]; // now this is first array of first line .... line 2 / url would be - $lines[1][2]
这是在我的代码中,就在“$lines = explode($break, $data);”行之后在我的代码中
【问题讨论】: