也谈php网站在线人数统计
发布时间:2020-05-12 02:53:49 所属栏目: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 } 其中的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); //from } 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']."人"; (编辑:焦作站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |