php分城市的源码,userlist.php 源代码在线查看 - 城市分类信息,门户网站,我做为地方信息网 资源下载 虫虫电子下载站...

require_once '../include/common.php';$page = intval($page);$page = $page ? $page : 1;$start = ($page==1)? 0 : ($page-1) * $webuserlist;$query = $DB->query("SELECT uid FROM {$tablepre}users ");$num = $DB->num_rows($query);$page = commonPage($page, $num, '../user/userlist.php?do=yes', $webuserlist);$query = $DB->query("SELECT * FROM {$tablepre}users ORDER BY uid DESC LIMIT $start, $webuserlist");while($rs = $DB->fetch_array($query)) {$rs['regdateline'] = date('Y-m-d', $rs['regdateline']);$rs['gender'] = $rs['gender'] ? '甯呭摜' : '缇庡コ';$rs['userfrom'] = $localCity[$rs[userfrom]];$rs['face'] = $rs['face'] ? "../webdata/userface/" . $rs['face'] : '../images/common/head_no.gif';$userlist[] = $rs;}if( (!@include_once '../webdata/cache/cache_userweek.php') || ($timestamp - $expiration > $webuserweek) ){$contents = "\r\n\n\$userWeekCache = array\r\n(\r\n";$query = $DB->query("SELECT uid, username, face FROM {$tablepre}users ORDER BY uid DESC LIMIT 0, 12");while($rs = $DB->fetch_array($query)) {$rs['face'] = $rs['face'] ? "../webdata/userface/" . $rs['face'] : '../images/common/head_no.gif';$contents .= "'$rs[uid]' => array('username'=>'".addslashes($rs[username])."', 'face'=>'$rs[face]'), \r\n";}$contents .= ");";$contents = preg_replace('/(.+?),/Us', '\\1\\2', $contents);if($fp = @fopen(FLY_ROOT . "/webdata/cache/cache_userweek.php", 'wb')) {@fwrite($fp, "");@fclose($fp);@chmod($cachefile, 0777);} else {echo 'Can not write to cache files, please check directory ./cache/ .';exit;}}include showpage('userlist');?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
最近所的一个项目需要用到的在线用户列表,上网搜索了一下发现现有的解决方案对用户意外退出的处理均不是太理想。一般来说,用户离开系统的方式有三种:主动注销、会话超时、直接关闭浏览器,对于前两种,我们很容易便可将该用户从在线列表中清除,关键是第三种(很多用户都是直接关闭窗口的~~郁闷ing),程序无法捕获窗口关闭的精确时间,只能等到会话超时后在能将该用户清除出在线列表,假设我们设置会话超时时间为60钟,而用户登陆系统随便浏览一个页面就以关闭浏览器的方式退出的话,我们要在将近1小时后才能从在线列表中将该用户清除出去(想象一下,系统显示n多人在线,可能除了你之外其他的n-1人都关机走人了,汗一个先```),而本文将尝试寻找一个解决方案把这种尴尬降至最低。 我的大概思路是,给每在线用户增加一个RefreshTime属性,建立一个负责将当前用户的RefreshTime属性设置为当前时间的单独页面(Refresh.aspx),然后在系统的主要页面(也可以是所有页面)中通过xmlhttp不断地请求Refresh.aspx页面,一旦用户关闭了与本系统相关的所有窗口,即以直接关闭浏览器的方式退出系统,那么该用户的RefreshTime属性便不会自动更新了,我们再设置一个自动刷新的超时时间(这个要比会话超时短很多_refreshTimeout),当发现某用户超过_refreshTimeout的时间没有自动刷新,就能判定该用户已经以直接关闭浏览器的方式退出了。 假设我们设置会话超时时间为60钟,自动刷新超时时间为1钟,在客户端通过xmlhttp每隔25秒(之所以不设1钟,是防止网速慢的时候访问Refresh.aspx超时,个人感觉,不一定正确)访问一次Refresh.aspx页面,在用户登陆、用户注销、检测用户是否在线的时候都执行清理超时用户(包括会话超时和自动刷新超时)操作,这样一来,在线用户列表的统计误差就由60钟降至1钟了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值