建站极客
网络编程 PHP编程 正文
也谈php网站在线人数统计
所属分类:
网络编程 / PHP编程
阅读数:
1226
收藏 0
赞 0
分享
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."<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 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']."人";
PHP利用Mysql锁解决高并发的方法 这篇文章主要介绍了PHP利用Mysql锁解决高并发的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
评论 0
收藏 0
赞 0
分享
php 后端实现JWT认证方法示例 这篇文章主要介绍了php 后端实现JWT认证方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
评论 0
收藏 0
赞 0
分享
PHP命名空间与自动加载类详解 这篇文章主要介绍了PHP命名空间与自动加载类,结合实例形式详细分析了php自动加载类与命名空间原理、使用方法及相关操作注意事项,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
PHP时间处理类操作示例 这篇文章主要介绍了PHP时间处理类,结合实例形式分析了DateTime、DateTimeZone、DateInterval及DatePeriod等常用日期时间处理类简单操作技巧,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
利用PHP扩展Xhprof分析项目性能实践教程 XHProf是Facebook开发的性能调试工具,能帮助直观的统计显示PHP程序执行中各方法函数调用次数和消耗时间,以方便我们排查性能瓶颈并进行调优。下面这篇文章主要给大家介绍了关于利用PHP扩展Xhprof分析项目性能实践的相关资料,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
PHP使用pdo实现事务处理操作示例 这篇文章主要介绍了PHP使用pdo实现事务处理操作,结合实例形式较为详细的分析了php基于pdo实现事务处理的相关原理与操作技巧,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
查看更多