问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求session在线人数统计代码在线等解决问题追加30

发布网友 发布时间:2022-04-22 07:54

我来回答

3个回答

懂视网 时间:2022-04-22 12:16

<?php
ob_start();
session_start();
$num=0;
$dirpt    =    "online";
$reftime    =    1;

if (is_dir($dirpt) && $dir = opendir($dirpt)) {
  while (($file = readdir($dir)) !== false) {
    if(strcmp($file,"..")==0 || strcmp($file,".")==0){
        continue;
    }
    $D_[date("Y-m-d H:i:s",filemtime($dirpt."/".$file))]=$file;
    $num++;
    unset($cum);
  }  
  closedir($dir);
  $filename    =    session_id();
  $fp        =    fopen($dirpt."/".$filename,"w");
  fputs($fp,"");
  fclose($fp);

  $ntime    =    date("Y-m-d H:i:s",mktime(date("H"),date("i")-1,0,date("m"),date("d"),date("Y")));
  $D_[$ntime]="-";
  krsort($D_);
  $onlinenumber=0;
  while(1){
    $vkey=key($D_);
    $onlinenumber++;
    if(strcmp($ntime,$vkey)==0){
        break;
    }else{
        array_shift($D_);
    }
  }
  array_shift($D_);
  reset($D_);
  while(count($D_)>0){
    $ckey=key($D_);
    unlink($dirpt."/".$D_[$ckey]);
    if(!next($D_)){
        break;
    }
  }

}else{
    @chmod("..",0777);
    @mkdir($dirpt,0777);

}
$online=$onlinenumber-1;
$retime=60*$reftime;
echo "当前在线<strong><font color=red>$online</font></strong>人<meta http-equiv=refresh content="{$retime},url=">";
ob_end_flush();
?>
<!--
   《利用文件属性结合Session进行在线人数统计》

    作者:sports98
编写日期: 2003-3-19
-->

热心网友 时间:2022-04-22 09:24

void Application_Start(object sender, EventArgs e)
{
//去数据库中读取历史访问总人数.得出总人数acount;
//Application["acount"]=acount;
//如果历史访问人数为0.则:
//Application["acount"]=1;//总访问人数
Application["online"]=1;//当前在线人数
}

void Application_End(object sender, EventArgs e)
{
//将Application["acount"]写入数据库.更新历史访问人数
}

void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码

}

void Session_Start(object sender, EventArgs e)
{
Application.lock();
Application["acount"]=Convert.ToInt32(Application["acount"])+1;//历史访问人数加一
Application["online"]=Convert.ToInt32(Application["online"])+1;//在线总人数加一
Application.Unlock();
}

void Session_End(object sender, EventArgs e)
{
Application.lock();
Application["online"]=Convert.ToInt32(Application["online"])-1;//在线总人数加一
Application.Unlock();
}

lock和Unlock大小写我忘了.你CTRL+J吧.

热心网友 时间:2022-04-22 10:42

我这边有个完整的代码,可以保存历史访问人数和读取历史人数的代码
<%@ Application Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script runat="server">

void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
int count = 0;
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["db_xxx"].ToString());
//这边是数据库连接
try
{
con.Open();
SqlCommand cmd = new SqlCommand("Select count(*) from T_Visit", con);
//这边是访问历史人数表的字段
count = Convert.ToInt32(cmd.ExecuteScalar());
}
catch
{

}
finally
{
con.Close();
}
Application["total"] = count;//Application是个全局变量,每个会话都可对他操作
Application["online"] = 0;
}

void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码

}

void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码

}

void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
Session.Timeout = 5;
Application.Lock();//锁定后,只有这个Session能够会话
//执行插入语句
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["db_fjdzj"].ToString());
try
{
con.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM T_Visit WHERE [VisitIP]=@VisitIP", con);
//这边判断是不是属于同一个人访问,是的话不添加
//我建议把这边替换成Cookies,这样性能更好
cmd.Parameters.Add("VisitIP", SqlDbType.VarChar, 15).Value = Request.UserHostAddress;
SqlDataReader sdr = cmd.ExecuteReader();
DateTime visitDT = DateTime.Now;
while (sdr.Read())
{
visitDT = Convert.ToDateTime(sdr["VisitDateTime"]);
int year = visitDT.Year;
int month = visitDT.Month;
int day = visitDT.Day;
int hour = visitDT.Hour;
int minute = visitDT.Minute;
if ((year == DateTime.Now.Year) && (month == DateTime.Now.Month) && (day == DateTime.Now.Day) && (hour == DateTime.Now.Hour))
{
if ((DateTime.Now.Minute - minute) < 5)
{
sdr.Dispose();
return;
}
}
}
sdr.Dispose();
Application["total"] = (int)Application["total"] + 1;
Application["online"] = (int)Application["online"] + 1;
cmd = new SqlCommand("INSERT INTO T_Visit (VisitDateTime,VisitIP) VALUES (@VisitDateTime,@VisitIP)", con);
cmd.Parameters.Add("VisitDateTime", SqlDbType.DateTime, 8).Value = DateTime.Now.ToLocalTime();
cmd.Parameters.Add("VisitIP", SqlDbType.VarChar, 15).Value = Request.UserHostAddress;
cmd.ExecuteNonQuery();
cmd.Dispose();

}
catch (Exception ex)
{
}
finally
{
con.Close();
con.Dispose();
}
Application.UnLock();//会话完毕后解锁
}

void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
Application.Lock();
if ((int)Application["online"] > 0)
{
Application["online"] = (int)Application["online"] - 1;
}
Application.UnLock();
}

</script>
//Application["total"] 历史访问人数
//Application["online"] 当前在线人数
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ipad mini2怎么看小说 关于ipadmini的几点疑惑 苹果平板图书阅读软件推荐推荐一个苹果可以用的免费看小说app 风冷无霜为什么噪音大 华为matepad11多大尺寸的 applewatch可以发微信语音吗? 人类基因组组成 仅从染色体照片(黑白非显带的)能否区别X染色体和C组染色体? ...车子加速不上来是什么原因,节气门清洗过了也不行? 换了变数箱油洗了节气门 提速慢了 停下来起步根本没力气 穇子粑粑怎么做好吃 穇子放几年会变成陈穇子? 塑料袋可以去柿子饼涩吗? 柿饼没蒸过吃是甜的,清水蒸过了之后变涩变硬是什么原因? 柿饼为什么煮一下会涩 柿饼发涩的又一原因被揭开 苹果手机以前绑定的微信免密支付,现在解绑了,以后还会扣费吗?_百度问一问 你好,我的手机手机号被我同学拿去登我微信,现在登老是显示过度频繁,手机号登录是他的微信该怎么办啊? 微信修改过正在发送要多久填写密码是多少才能登录 华为手机怎么同时登陆两个 我的被封了,然后我用同一个手机号又注册登陆,以前的那个还能找回来吗? 我两个微信绑了同个手机号,现在登陆老是登陆到另一个号,怎么办? 登录时填写和密码,上面显示操作过于频繁,请稍后,请问什么办法可以解除? 我要把帐号卖给别人不知道怎么把帐号密码给别人是要把微信密码给他登录吗? 在变声器上登录自己的微信账号密码会被盗吗 如果密码找回了显示别人的可以登自己的吗? 我微信登录的电话号码解绑换成新的电话号码,原号码怎么做才能重新登录... 为什么现在登录老公微信需要验证,是他自己设置什么了吗 别人的手机登陆我的微信,给我另一个手机微信为什么不能转帐呢? 我只有,没有手机号码也忘记密码了,请问微信该怎么登录?申报不成功咋弄 容声冰箱。BCD一639WD11HA故障速档结冰不会制冷是什么原因? 男人对三儿的新鲜感,能保持多久? 老公和小三在一起热恋期多久他们久了还能分得了吗好着急 核桃蜂蜜水的制作步骤 asp.net 统计在线人数,以一分钟为准 招钱宝里赎回已撤单什么意思 微信理财的基金收益中显示“已撤单&quot;是什么意思. 梦见死人去整理房间,自己离开房间 中国银行理财撤单办理规定 梦见死人抬进屋 被手机号绑定了,手机号不用了,微信上不去了,怎么办? 手机号丢了上不去了怎么办 是原来的手机号,手机号不用了,微信也登不上了,怎么办? 只知道,密码忘了手机号不用了怎么办 我换了手机,号码也换了,可以前的登不上去了,怎么办? 杉德 支付牌照? 在淘宝网上能用杉德万通卡付款吗? 请问杉德支付客服是多少? 是原来的手机号,手机号不用了,微信也登不上了? 是原来的手机号,手机号不用了,微信也登不上了,怎么办?