在线人数统计源代码

根据我的上篇文章《也谈网站在线人数统计》,我写的在线人数统计程序源代码如下:如有错误请指正。

db层:
db_online.php

    //该函数使用户自己在线,并且检查其他用户的在线情况
    function checkOnline($userid,$tempid=null)
    {
        $conn = connect();

        //对于所有用户
        //先设置自己为在线
        $stmt = "UPDATE ".DB_NAME.".USER SET IsOnline='Y' WHERE UserID=".$userid;
        $result = query($stmt,$conn);
//info($stmt);
        //如果当前用户是游客
        if ($tempid != null)
        {
            $stmt = "SELECT TempID FROM ".DB_NAME.".TEMPUSER WHERE 

TempID=".$tempid;
            $result = query($stmt,$conn);
//info($stmt);
            //如果该游客还在线
            if ($row = fetch_array($result))
            {
                $stmt = "UPDATE ".DB_NAME.".TEMPUSER SET 

RequestTime='".getCurrentTime()."' WHERE TempID=".$tempid;
                $result = query($stmt,$conn);
//info($stmt);
            }
            //该游客已经离线
            else
            {
                $stmt = "INSERT INTO ".DB_NAME.".TEMPUSER 

VALUES('".$tempid."','".getCurrentTime()."')";
                $result = query($stmt,$conn);
//info($stmt);
            }
        }
        
        //查看其他用户
        //普通用户
        $stmt = "UPDATE ".DB_NAME.".USER SET IsOnline='N' WHERE ".time()." - 

unix_timestamp(RequestTime) > ".ONLINE_DURATION." AND UserGroupID != ".GUEST;
        $result = query($stmt,$conn);
        
        //游客
        $stmt = "DELETE FROM ".DB_NAME.".TEMPUSER WHERE ".time()." - 

unix_timestamp(RequestTime) > ".ONLINE_DURATION;
        $result = query($stmt,$conn);
        disconnect($conn);
    }

    //得到在线人数,分用户和游客
    function getOnlineNumber()
    {
        $olnum = array();
        $conn = connect();
        $stmt = "SELECT COUNT(UserID) FROM ".DB_NAME.".USER WHERE IsOnline='Y' AND 

UserGroupID != 4"; //4 为guest的用户组id
//info ($stmt);
        $result = query($stmt,$conn);
        $olnum['user'] = result($result,0,"COUNT(UserID)");
        $stmt = "SELECT COUNT(TempID) FROM ".DB_NAME.".TEMPUSER";
//info ($stmt);
        $result = query($stmt,$conn);
        if ($row = fetch_array($result))
        {
            $olnum['guest'] = $row['COUNT(TempID)'];
        }
        disconnect($conn);
        return $olnum;
    }



其中的connect(), disconnect(), query(),fetch_array()函数在dbmanager.inc.php中
dbmanager.inc.php

    define("DB_NAME","databasename");
    define("DB_USER","user");
    define("DB_PASS","pass");
    define("DB_HOST","localhost");

    function connect()
    {
        //echo "Connecting to Host:".HOST."<br>";
        $conn = mysql_connect(DB_HOST,DB_USER,DB_PASS);
        mysql_select_db(DB_NAME);
        /*
        if ($conn)
        {
            echo "Connect to database sucessfully. connection id:".$conn."<br>";
        }
        else
        {
            echo "Connect to database failed.<br>";
        }
        */
        return $conn;
    }

    function pconnect()
    {
        return mysql_pconnect(DB_HOST,DB_USER,DB_PASS);
    }
    
    function disconnect($conn)
    {
        $close = mysql_close($conn);
        /*
        if ($close)
            echo "MySQL Database disconnected.<br>";
        else
            echo "MySQL Database disconnecting failed. Please try again.<br>";
        */
    }

    function query($stmt,$conn)
    {
        return mysql_query($stmt,$conn);
    }
    
    function fetch_array($result)
    {
        return mysql_fetch_array($result);
    }
    
    function fetch_row($result)
    {
        return mysql_fetch_row($result);
    }
    
    function num_rows($result)
    {
        return mysql_num_rows($result);
    }
    
    function result($result,$row,$field)
    {
        return mysql_result($result,$row,$field);
    }


rule层:
rl_online.php
    function getOnline()
    { 
        if ($userid == 2)
        {
            if (session_is_registered("tempuserid"))
            {
                checkOnline($userid,$tempuserid);
            }
        }
        else
        {
            checkOnline($userid);
        }
        return getOnlineNumber();
    }

ui层:
ui_online.php
    $online_num = getOnline();
    echo "在线人数,注册用户".$online_num['user']."人,游客".$online_num['guest']."人";