PHP代码
- 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; //from www.w3sky.com
- }
- 其中的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.”
“; - $conn = mysql_connect(DB_HOST,DB_USER,DB_PASS);
- mysql_select_db(DB_NAME);
- /*
- if ($conn)
- {
- echo “Connect to database sucessfully. connection id:”.$conn.”
“; - }
- else
- {
- echo “Connect to database failed.
“; - }
- */
- 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.
“; - else
- echo “MySQL Database disconnecting failed. Please try again.
“; - */
- }
- function query($stmt,$conn)
- {
- return mysql_query($stmt,$conn); //from www.w3sky.com
- }
- 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’].“人”;
也谈网站在线人数统计:等您坐沙发呢!