TYPECHO WIKI
每一个作品都值得被记录

Typecho博客添加访客统计,在线人数,加载耗时

Typecho维基君Typecho教程 • 1414次浏览 • 发布 2021-11-03 • 更新 2021-11-03

适用于各种主题的Typecho博客添加访客统计,在线人数,加载耗时,效果请查看本站底部!

访客统计

首先将以下代码放入到主题目录/core/function.php中

 function theAllViews()
        {
            $db = Typecho_Db::get();
            $row = $db->fetchAll('SELECT SUM(VIEWS) FROM `typecho_contents`');
                echo '访客总数:',number_format($row[0]['SUM(VIEWS)']);
        } 

然后再将以下挂载点代码放到要显示的位置的PHP文件中,通常是主题目录/footer.php

<?php echo theAllViews();?>

真实IP: 网站在配置了CDN进行加速后一般都无法获取访客真实IP,只能获取访问时使用的CDN节点IP。
将以下代码添加到网站根目录下/config.inc.php中

if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
  $_SERVER['REMOTE_ADDR'] = $list[0];
}

在线人数

同理将以下代码放入到主题目录/core/function.php中

/在线人数
    function online_users() {
        $filename='online.txt'; 
        $cookiename='Nanlon_OnLineCount'; 
        $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"; 
    } 

同理再将以下挂载点代码放到要显示的位置的PHP文件中,通常是主题目录/footer.php

<?php echo online_users() ?>

加载耗时

同理将以下代码放入到主题目录/core/function.php中

    function timer_start() {
        global $timestart;
        $mtime     = explode( ' ', microtime() );
        $timestart = $mtime[1] + $mtime[0];
        return true;
    }
    timer_start();
    function timer_stop( $display = 0, $precision = 3 ) {
        global $timestart, $timeend;
        $mtime     = explode( ' ', microtime() );
        $timeend   = $mtime[1] + $mtime[0];
        $timetotal = number_format( $timeend - $timestart, $precision );
        $r         = $timetotal < 1 ? $timetotal * 1000 . " ms" : $timetotal . " s";
        if ( $display ) {
            echo "加载耗时:$r";
        }
        return "加载耗时:$r";
    }   

同理再将以下挂载点代码放到要显示的位置的PHP文件中,通常是主题目录/footer.php

 <?php echo timer_stop();?>
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,Typecho.Wiki所有文章均包含本声明。
厂商投放

【腾讯云】🎉五一云上盛惠!云服务器99元/月续费同价!

腾讯云五一劳动节海量产品 · 轻松上云!云服务器首年1.8折起,买1年送3个月!超值优惠,性能稳定,让您的云端之旅更加畅享。快来腾讯云选购吧!

广告
添加新评论 »