Posted on 2007-08-06 20:48
(NineTyNine) 阅读(2998)
评论(17) 编辑 收藏 网摘 所属分类:
.Net其他相关
Feedback
似乎这样的文章比比皆是,也没看出一点特别的地方,放在首页不合适吧?
btw:
这样的统计如果是具体到每个网页的访问次数了?你不会也用applciation吧?
@kisskiki
哦。我是第一次使用博客园的博客。对其中的一些东西还不是很了解。望赐教。
@kisskiki
对于具体到每个页面的访问次数我会想出好办法的。
那么在每个页面的Page_Load(){}里都加上对数据库中统计表的更新是不是一个可行的办法?
@Ninety-Nine
每访问一个页面都对数据库更新...ORZ,并发不出问题就有鬼了
加上IP实现每个城市的在线人数统计
北京:3
上海:2
我认为楼主的保存人数的逻辑理论上可行,但实际上不可靠。
因为很多服务器在很长一段时间内都不会出问题,不关机,也不重启,但是往往在出问题的时候强行关机或重启,那么就不会执行Application_End事件;结果是,若干天的统计数据没有得到保存。
建议:在Session的某个事件中额外增加保存代码,不过使用某种控制方式(比如定时,定量)使之并非每次都保存到数据库。
这种方法并不可行.以前用过.并发数多的时候会必致系统速度严重变慢
@剑在上海^^
貌似没有对每个页面访问的时候都更新数据库把??
@Wuya
好像这个确实是一个实在的问题,得好好研究下
乍一看很有道理,当访问量到一定规模的时候,整个系统架构会发生很大的变化,如果部署在反向代理和负载均衡器后面,Session会不再对每个访问者有用,因为他们会最大利用现有链接,这样的统计会比实际小,以前也这样,现在全部用第三方统计了。
使用session不利于大访问量站点扩展系统架构。
@布尔
re: Asp.Net实现记录历史访问人数和当前在线人数
加上IP实现每个城市的在线人数统计
北京:3
上海:2
请问:具体怎样实现?初学者,望赐教。
@dominic
呵呵。我刚学.net半年。您的话我有很多地方都不懂。
1.当访问量到一定规模的时候,整个系统架构会发生很大的变化?为什么?
2.反向代理和负载均衡器,这些是用来做什么的?
利用asp.net的权限模型可以获取当前在线用户
<script runat="server">
private void Page_PreRender()
{
MembershipUserCollection allUsers = Membership.GetAllUsers();
MembershipUserCollection filteredUsers = new MembershipUserCollection();
bool isOnline = true;
foreach (MembershipUser user in allUsers)
{
if (user.IsOnline == isOnline)
{
filteredUsers.Add(user);
}
}
Users.DataSource = filteredUsers;
Users.DataBind();
}
</script>
<asp:GridView runat="server" ID="Users" AutoGenerateColumns="false"
CssClass="list" AlternatingRowStyle-CssClass="odd" GridLines="none"
AllowSorting="true"
>
<Columns>
<asp:BoundField DataField="username" HeaderText="User Name" />
<asp:BoundField DataField="email" HeaderText="Email" />
<asp:BoundField DataField="comment" HeaderText="Comments" />
<asp:BoundField DataField="creationdate" HeaderText="Creation Date" />
<asp:BoundField DataField="lastlogindate" HeaderText="Last Login Date" />
<asp:BoundField DataField="lastactivitydate" HeaderText="Last Activity Date" />
<asp:BoundField DataField="isapproved" HeaderText="Is Active" />
<asp:BoundField DataField="isonline" HeaderText="Is Online" />
<asp:BoundField DataField="islockedout" HeaderText="Is Locked Out" />
</Columns>
</asp:GridView>