这篇文章上次修改于 207 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

引子

刚才在折腾代码的时候不小心误删了一段代码导致博客打不开,并提示出一段信息: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() ?>

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 转载请注明出处

分享 : 微博 微信 百度已收录