我是一只历经沧桑的老狮

typecho实时在线人数统计代码

引子

刚才在折腾代码的时候不小心误删了一段代码导致博客打不开,并提示出一段信息:Call to undefined function online_users()。经过翻译后得知是调用了一个没有定义的叫做 online_users() 的函数, 我立马想到了在线人数统计代码。还好博客当时做了备份,于是便到百度网盘去下载备份文件,结果 LJ 百度网盘下载速度比龟趴还慢。实在等不了的我于是想通过百度搜索找到在线统计人数代码进行替换,可无奈找了大半天都没有找到,于是无奈之下只能等着百度网盘的备份文件了。在等待了将近半小时终于将备份问题下载下来,成功的把文件还原了。通过这件事让我觉得有必要发篇博文记录下在线人数统计代码的实现方法,算是给自己再做一次备份,防止下次出现类似情况。

食用方法

首先在主题文件里的 functions.php 里面最下面放入以下代码

// 在线人数
function online_users() {
    $filename='online.txt'; // 数据文件
    $cookiename='Nanlon_OnLineCount'; //Cookie 名称
    $onlinetime=30; // 在线有效时间
    $online=file($filename); 
    $nowtime=$_SERVER['REQUEST_TIME']; 
    $nowonline=array(); 
    foreach($online as $line){$row=explode('|',$line); 
        $sesstime=trim($row[1]); 
        if(($nowtime - $sesstime)<=$onlinetime){$nowonline[$row[0]]=$sesstime;
        } 
    } 
    if(isset($_COOKIE[$cookiename])){$uid=$_COOKIE[$cookiename]; 
    }else{
        $vid=0;
        do{
            $vid++; 
            $uid='U'.$vid; 
        }while(array_key_exists($uid,$nowonline)); 
        setcookie($cookiename,$uid); 
    } 
    $nowonline[$uid]=$nowtime;
    $total_online=count($nowonline); 
    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"; 
} 

然后在想要显示的地方放入以下代码即可,我的是放在页脚文件即footer.php

<?php echo online_users() ?>
本站未注明转载的文章均为原创,转载请注明来源,谢谢!

添加新评论