在线时间计算的问题

ryhbgs 2015-02-06 02:25:30
用asp.net做了一个小的系统,需要记录会员登录后使用系统的在线时间,然后记录到数据库中,不知道如何实现,
请大侠们指教指教,谢谢啦!
...全文
333 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
guarentianxia11 2015-03-04
  • 打赏
  • 举报
回复
引用 12 楼 sp1234 的回复:
[quote=引用 10 楼 ryhbgs 的回复:] [quote=引用 3 楼 Z65443344 的回复:] 如果是想统计在线时间(比如类似QQ根据登陆时间计算级别) 那么加个心跳,登陆的时候插入一条记录,和登陆时间,心跳里更新退出时间
我很菜的,不知道心跳是什么,请帮助一下。[/quote] 你可以创建一个用户控件,例如叫做 HeartBeat.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="HeartBeat.ascx.cs" Inherits="HeartBeat" %>
using System;
using System.Configuration;
using System.Data.SqlClient;

public partial class HeartBeat : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var sql = string.Format("if exists(select * from HeartBeat where SessionId='{0}') " +
            "update HeartBeat set Time='{1}' where SessionId='{0}'; else " +
            "insert HeartBeat(SessionId,Time) values ('{0}','{1}')", Session.SessionID, DateTime.Now.ToString("yyyy-M-d h:m:s"));
        using (var sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString1"].ConnectionString))
        {
            var comm = new SqlCommand(sql, sqlconn);
            sqlconn.Open();
            comm.ExecuteNonQuery();
        }
    }
}
然后,把它拖入每一个aspx。[/quote] 大神的指导
ryhbgs 2015-03-04
  • 打赏
  • 举报
回复
引用 12 楼 sp1234 的回复:
[quote=引用 10 楼 ryhbgs 的回复:] [quote=引用 3 楼 Z65443344 的回复:] 如果是想统计在线时间(比如类似QQ根据登陆时间计算级别) 那么加个心跳,登陆的时候插入一条记录,和登陆时间,心跳里更新退出时间
我很菜的,不知道心跳是什么,请帮助一下。[/quote] 你可以创建一个用户控件,例如叫做 HeartBeat.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="HeartBeat.ascx.cs" Inherits="HeartBeat" %>
[code=csharp]using System; using System.Configuration; using System.Data.SqlClient; 然后,把它拖入每一个aspx。[/quote] 非常感谢,我来试试!
小蜗牛1 2015-03-02
  • 打赏
  • 举报
回复
引用 12 楼 sp1234 的回复:
[quote=引用 10 楼 ryhbgs 的回复:] [quote=引用 3 楼 Z65443344 的回复:] 如果是想统计在线时间(比如类似QQ根据登陆时间计算级别) 那么加个心跳,登陆的时候插入一条记录,和登陆时间,心跳里更新退出时间
我很菜的,不知道心跳是什么,请帮助一下。[/quote] 你可以创建一个用户控件,例如叫做 HeartBeat.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="HeartBeat.ascx.cs" Inherits="HeartBeat" %>
using System;
using System.Configuration;
using System.Data.SqlClient;

public partial class HeartBeat : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var sql = string.Format("if exists(select * from HeartBeat where SessionId='{0}') " +
            "update HeartBeat set Time='{1}' where SessionId='{0}'; else " +
            "insert HeartBeat(SessionId,Time) values ('{0}','{1}')", Session.SessionID, DateTime.Now.ToString("yyyy-M-d h:m:s"));
        using (var sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString1"].ConnectionString))
        {
            var comm = new SqlCommand(sql, sqlconn);
            sqlconn.Open();
            comm.ExecuteNonQuery();
        }
    }
}
然后,把它拖入每一个aspx。[/quote] 高手,学习了
Rajesh_James 2015-03-02
  • 打赏
  • 举报
回复
这个问题的难点在于如何记录会员的下线时间
程序猿老曾 2015-03-02
  • 打赏
  • 举报
回复
在线时长是很蛋疼的问题~~~~主要在于结束登录这一点
king4323210 2015-03-02
  • 打赏
  • 举报
回复
在线时间统计根本没有意思。 最起码也要和业务挂钩,谁叫你做的,你找谁去。 骂他神经病。 这种一登陆,就算时间的,你以为是在挂QQ。 这种数据对后面的二次分析一点用处都没有
  • 打赏
  • 举报
回复
web页面的所谓心跳,就是把交互时间记录下来。并且当页面发呆时,你可以在使用一个 ajax 请求来(偷偷地)访问一下服务器来记录这个时间。 就是这样。
  • 打赏
  • 举报
回复
引用 10 楼 ryhbgs 的回复:
[quote=引用 3 楼 Z65443344 的回复:] 如果是想统计在线时间(比如类似QQ根据登陆时间计算级别) 那么加个心跳,登陆的时候插入一条记录,和登陆时间,心跳里更新退出时间
我很菜的,不知道心跳是什么,请帮助一下。[/quote] 你可以创建一个用户控件,例如叫做 HeartBeat.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="HeartBeat.ascx.cs" Inherits="HeartBeat" %>
using System;
using System.Configuration;
using System.Data.SqlClient;

public partial class HeartBeat : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var sql = string.Format("if exists(select * from HeartBeat where SessionId='{0}') " +
            "update HeartBeat set Time='{1}' where SessionId='{0}'; else " +
            "insert HeartBeat(SessionId,Time) values ('{0}','{1}')", Session.SessionID, DateTime.Now.ToString("yyyy-M-d h:m:s"));
        using (var sqlconn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString1"].ConnectionString))
        {
            var comm = new SqlCommand(sql, sqlconn);
            sqlconn.Open();
            comm.ExecuteNonQuery();
        }
    }
}
然后,把它拖入每一个aspx。
「已注销」 2015-03-01
  • 打赏
  • 举报
回复
可以试试长连接 实现长连接要客户端和服务端都支持长连接
ryhbgs 2015-03-01
  • 打赏
  • 举报
回复
引用 3 楼 Z65443344 的回复:
如果是想统计在线时间(比如类似QQ根据登陆时间计算级别) 那么加个心跳,登陆的时候插入一条记录,和登陆时间,心跳里更新退出时间
我很菜的,不知道心跳是什么,请帮助一下。
ryhbgs 2015-02-06
  • 打赏
  • 举报
回复
谢谢楼上各位,session实现不了。 js不知道如何实现?
於黾 2015-02-06
  • 打赏
  • 举报
回复
web一样可以加心跳 而且即使是winform的通信程序,也一样要加心跳,不能靠客户端退出给服务端发消息 万一客户端掉线/宕机/停电/网络断开,退出QQ的时候发不出消息呢?
xiaozhanger 2015-02-06
  • 打赏
  • 举报
回复
引用 3 楼 Z65443344 的回复:
如果是想统计在线时间(比如类似QQ根据登陆时间计算级别) 那么加个心跳,登陆的时候插入一条记录,和登陆时间,心跳里更新退出时间
qq是可执行程序,好处理, 他要的是WEB的,差别还是比较大的
於黾 2015-02-06
  • 打赏
  • 举报
回复
引用 5 楼 iamwxj 的回复:
登陆的时候记录登陆时间,网页关闭的时候记录退出时间,这一时间段作为在线时间
记录"网页关闭"不靠谱 你怎么知道是网页关闭,而不是IE关闭,不是结束进程,不是计算机关机,不是停电,不是拔网线,不是交换机路由器停电
iamwxj 2015-02-06
  • 打赏
  • 举报
回复
登陆的时候记录登陆时间,网页关闭的时候记录退出时间,这一时间段作为在线时间
小蜗牛1 2015-02-06
  • 打赏
  • 举报
回复
可以利用js做一个计时器,网上有很多例子
於黾 2015-02-06
  • 打赏
  • 举报
回复
如果是想统计在线时间(比如类似QQ根据登陆时间计算级别) 那么加个心跳,登陆的时候插入一条记录,和登陆时间,心跳里更新退出时间
tcmakebest 2015-02-06
  • 打赏
  • 举报
回复
用户登录的时候记录下开始时间,然后每操作一次更新结束时间. 或者等SESSION过期时记录结束时间.
於黾 2015-02-06
  • 打赏
  • 举报
回复
记录会员登录后使用系统的在线时间,然后记录到数据库中 这东西有任何必要记录到数据库中? 在线时间=当前时间-登陆时间 不就是这样而已吗
"饿了么"是中国知名的在线外卖订餐平台,已覆盖中国数百个城市,数千万用户,聚集了数十万家餐饮商户。"饿了么"为中国广泛地区的用户提供丰富多样、简单快捷的在线订餐服务;为不同类型的餐饮商户提供基于互联网技术的一体化运营解决方案。网上订餐不仅得到了用户们的亲睐,更是餐馆们创收的绝佳选择。餐饮企业普遍面临竞争压力加剧、人力成本、租金成本上涨等问题,而网上订餐平台正好解决这些餐饮企业的烦恼。   相关数据显示预计到2015年中国餐饮O2O市场规模将达到1200亿元左右,如此巨大的市场,自然引得各家订餐网站疯狂抢夺。抢夺方式最明显的就是圈地扩张。网站订餐是一个不可缺少的市场,其市场会越来越大,如何做一家网站订餐系统,其程序是比不可少。经过长时间的测试开发(eatcms)可以帮您打造本地商业门户,抢占手机市场等。 功能介绍 餐厅展示 展示餐厅的基本信息,图片信息,菜谱,以及地图显示商家位置等。 网上下单 用户通过系统选择商家并挑选菜品提交订单。 定制餐厅 可把附近的餐厅添加到首页。 会员中心 会员注册后有独立的会员中心,管理个人资料,订单信息,地址信息。 餐厅管理 商家有独立的管理平台,可以自主设置营业时间,更新菜单,更新资料,查收订单更新订单状态,真正实现完全自主管理。 订单管理 系统订单管理,即时查看网上订单,对订单进行相应的分发,实时更新状态. 会员管理 对网站会员进行管理,资料导出,更新资料,查看消费情况积分情况。 高级功能 财务统计 对系统营业额按照不同的条件进行查询统计,可以查看餐馆营业额,时间段内营业额,今日营业额等各项数据指标。 短信通知 有订单自动短信提醒到对应的餐厅。订单通过短信网关下发给商家,发送送餐信息给用户,信息流通更加顺畅 地图搜索 集成google地图进行商家**与搜索,用户只需**自己的位置就可以看到附近可以配送的商家。 运费计算 系统可以设置是否增加运费(高级定制功能:根据商家地址以及用户的配送地址动态计算最短路径并按照计费标准进行计算)。 界面整体定制 可根据客户的需求以及客户自身的品牌形象**进行全新的界面设计,整体风格的调整,以符合客户的品牌形象。

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧