网站今日访问,总访问及在线人数统计 asp.net
如题,求一个这样的教程,用不用数据库都没事,不过如果是用数据库,最好是ACCESS的,我是初学者,希望不要太难的,呵做毕业设计用的,谢谢大家啦..教我下这个,,一直都不懂...
如题 ,求一个这样的教程,用不用数据库都没事,不过如果是用数据库,最好是ACCESS的, 我是初学者,希望不要太难的,呵 做毕业设计用的, 谢谢大家啦.. 教我下这个,,一直都不懂.
可是我不怎么会用Global.asax 不知道具体的怎么写. 我写的老是有问题, 统计的数目都是错 的,唉。 展开
可是我不怎么会用Global.asax 不知道具体的怎么写. 我写的老是有问题, 统计的数目都是错 的,唉。 展开
3个回答
展开全部
用application计数吧,最简单了。
写在Global.asax里面,用到 Session_Start,Session_End,Application_Start,Application_End,以及lock。
-------------------------------------------------------------------
下面是我刚随手写的,用Global统计的,带有简单的防丢失数据功能。
性能不怎么样,可以说只能供小网站用用。
并未测试,只是给你演示一下基本的思路而已。
/// <summary>
/// 总人数,今日人数,在线人数
/// </summary>
static int totalCount, todayCount, onlineCount;
/// <summary>
/// 更新今日访问访问数的标志
/// </summary>
static DateTime lastCleanUp;
/// <summary>
/// 锁对象
/// </summary>
static object _obj = new object();
/// <summary>
/// 日志文件的路径
/// </summary>
string logFile = AppDomain.CurrentDomain.BaseDirectory + "visitLog.txt";
protected void Application_Start(object sender, EventArgs e)
{
//刚启动,为了防止服务器意外死机重启等因素,需要从记录文件中读取数目
if (System.IO.File.Exists(logFile))
{
string[] lines = System.IO.File.ReadAllLines(logFile);
if (lines.Length >= 3)
{
int.TryParse(lines[0], out totalCount);
int.TryParse(lines[1], out todayCount);
DateTime.TryParse(lines[2], out lastCleanUp);
}
}
onlineCount = 0;
}
protected void Session_Start(object sender, EventArgs e)
{
//锁定对象确定单线程访问
lock (_obj)
{
//如果日期变化了,将今日访问归零
if (DateTime.Now.Day != lastCleanUp.Day)
{
lastCleanUp = DateTime.Now;
todayCount = 0;
}
//计数
todayCount++;
totalCount++;
//为了防止服务器死机重启等意外因素丢失数据,我们每隔50个访客更新一下记录文件
//这个需要根据访问量调整
if (totalCount % 50 == 0)
{
string[] fns = new string[] { totalCount.ToString(), todayCount.ToString(), lastCleanUp.ToString() };
System.IO.File.Delete(logFile);
System.IO.File.WriteAllLines(logFile, fns);
}
//在线人数加1
onlineCount++;
}
}
protected void Session_End(object sender, EventArgs e)
{
//确保不冲突
lock (_obj)
{
//在线人数减1
onlineCount--;
}
}
protected void Application_End(object sender, EventArgs e)
{
//保存当前访问
string[] fns = new string[] { totalCount.ToString(), todayCount.ToString(), lastCleanUp.ToString() };
System.IO.File.Delete(logFile);
System.IO.File.WriteAllLines(logFile, fns);
}
写在Global.asax里面,用到 Session_Start,Session_End,Application_Start,Application_End,以及lock。
-------------------------------------------------------------------
下面是我刚随手写的,用Global统计的,带有简单的防丢失数据功能。
性能不怎么样,可以说只能供小网站用用。
并未测试,只是给你演示一下基本的思路而已。
/// <summary>
/// 总人数,今日人数,在线人数
/// </summary>
static int totalCount, todayCount, onlineCount;
/// <summary>
/// 更新今日访问访问数的标志
/// </summary>
static DateTime lastCleanUp;
/// <summary>
/// 锁对象
/// </summary>
static object _obj = new object();
/// <summary>
/// 日志文件的路径
/// </summary>
string logFile = AppDomain.CurrentDomain.BaseDirectory + "visitLog.txt";
protected void Application_Start(object sender, EventArgs e)
{
//刚启动,为了防止服务器意外死机重启等因素,需要从记录文件中读取数目
if (System.IO.File.Exists(logFile))
{
string[] lines = System.IO.File.ReadAllLines(logFile);
if (lines.Length >= 3)
{
int.TryParse(lines[0], out totalCount);
int.TryParse(lines[1], out todayCount);
DateTime.TryParse(lines[2], out lastCleanUp);
}
}
onlineCount = 0;
}
protected void Session_Start(object sender, EventArgs e)
{
//锁定对象确定单线程访问
lock (_obj)
{
//如果日期变化了,将今日访问归零
if (DateTime.Now.Day != lastCleanUp.Day)
{
lastCleanUp = DateTime.Now;
todayCount = 0;
}
//计数
todayCount++;
totalCount++;
//为了防止服务器死机重启等意外因素丢失数据,我们每隔50个访客更新一下记录文件
//这个需要根据访问量调整
if (totalCount % 50 == 0)
{
string[] fns = new string[] { totalCount.ToString(), todayCount.ToString(), lastCleanUp.ToString() };
System.IO.File.Delete(logFile);
System.IO.File.WriteAllLines(logFile, fns);
}
//在线人数加1
onlineCount++;
}
}
protected void Session_End(object sender, EventArgs e)
{
//确保不冲突
lock (_obj)
{
//在线人数减1
onlineCount--;
}
}
protected void Application_End(object sender, EventArgs e)
{
//保存当前访问
string[] fns = new string[] { totalCount.ToString(), todayCount.ToString(), lastCleanUp.ToString() };
System.IO.File.Delete(logFile);
System.IO.File.WriteAllLines(logFile, fns);
}
数位汇聚
2023-08-28 广告
2023-08-28 广告
1、数位观察新增一个数据搜索平台:数位观察,不用费力的去各个平台找数据,通过这个平台搜索或勾选需要的标签就行,就能找到各个维度的数据。提供12大类、50多万个数据和数据报告(基本上覆盖了市面上所有细分行业)。在网站首页就有全面又详细的数据分...
点击进入详情页
本回答由数位汇聚提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询