冰凌汇编

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 114|回复: 0
收起左侧

[PHP] @Tencent开源一个软件在线人数统计源代码

[复制链接]
Tencent 发表于 2022-3-27 22:41:47
非常简单的使用方法,只需要GET访问就可以了。

代码附上
[PHP] 纯文本查看 复制代码
<?php

$filename = 'online.txt';  //xx文件;返回在线数字
$cookiename = 'VGOTCN_OnLineCount';  //cookie名称
$onlinetime = 60;  //在线有效时间,单位:秒 (即60等于1分钟)

$online = file($filename); 
$nowtime = time(); 
$nowonline = array();

/*
        [url=home.php?mod=space&uid=398972]@[/url] 得到仍然有效的xx
*/
foreach($online as $line) {
        $row = explode('|',$line);
        $sesstime = trim($row[1]);
        if(($nowtime - $sesstime) <= $onlinetime) {  //如果仍在有效时间内,则xx继续保存,否则被放弃不再统计
                $nowonline[$row[0]] = $sesstime;  //获取在线列表到数组,会话ID为键名,最后通信时间为键值
        }
}

/*
        @ 创建访问者通信状态
                使用cookie通信
                COOKIE 将在关闭浏览器时失效,但如果不关闭浏览器,此 COOKIE 将一直有效,直到程序设置的在线时间超时
*/
if(isset($_COOKIE[$cookiename])) {  //如果有COOKIE即并非初次访问则不添加人数并更新通信时间
        $uid = $_COOKIE[$cookiename];
} else {  //如果没有COOKIE即是初次访问
        $vid = 0;  //初始化访问者ID
        do {  //给用户一个新ID
                $vid++;
                $uid = 'U'.$vid;
        } while (array_key_exists($uid,$nowonline));
        setcookie($cookiename,$uid);
}
$nowonline[$uid] = $nowtime;  //更新现在的时间状态

/*
        @ 统计现在在线人数
*/
$total_online = count($nowonline);

/*
        @ 写入xx
*/
if($fp = @fopen($filename,'w')) {
        if(flock($fp,LOCK_EX)) {
                rewind($fp);
                foreach($nowonline as $fuid => $ftime) {
                        $fline = $fuid.'|'.$ftime."\n";
                        @fputs($fp,$fline); 
                }
                flock($fp,LOCK_UN);
                fclose($fp);
        }
}
        echo ''.$total_online.''; 
?>

冰凌汇编免责声明
以上内容均来自网友转发或原创,如存在侵权请发送到站方邮件9003554@qq.com处理。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|站点统计|Archiver|小黑屋|RSS|冰凌汇编 ( 滇ICP备2022002049号 滇公网安备 53032102000029号)|网站地图

GMT+8, 2022-10-6 21:41 , Processed in 0.114187 second(s), 6 queries , Redis On.

冰凌汇编 - 建立于2021年12月20日

Powered by Discuz! © 2001-2022 Comsenz Inc.

快速回复 返回顶部 返回列表