统计在线人数还有会员数的一个存储过程
2006-08-21 02:18
267 查看
关于人数统计有人说是用application的概念。不过因为要涉及到每个分版块每个版块的人数,所以呢。我还是没有用这样的办法。这样办法也不能完全的统计出来。
为此我写了个存储过程
其中Online_ID 代表了用户的ID,我用户ID是同用户名分开的啦。这个ID也是标志用户唯一的一个值。所以我作为传入参数进入onlineid ,
其中onlinename 表示了用户名,
其中对于游客,我让游客的ID统一为0,游客名统一为“游客”。
我的总体思想就是基本在每个页面都调用这样的存储过程。
让每个版块进入就开始统计人数。在存储过程中比较如果是会员的话,那么他的ID就大于0。查找表看看是否存在这样的用户。如果存在那么更新她的ONLINE时间,以及版块的ID。如果不存在那么新加一个。如果是游客,那么它的ID为0,直接插入进表单。
同时在一开始的时候比较一下,当前时间同存储的时候如果在20分钟内用户无活动,那么从在线表里面删除用户。
当然这个时间可以自己设定,我为了让看上去用户人多点,所以呵呵。当然这样统计还不完善,没有精确的统计。不过也满足了日常的需求。估计你还有更好的,讨论一下阿坝。
CREATE PROCEDURE Pr_UpdateOnline
(
@onlineid int,
@onlinename varchar(200),
@onlineip varchar(100),
@onlinegroupid int,
@onlineboardid int,
@onlinetime datetime
)
AS
DELETE FROM BBS_Online
WHERE
DATEDIFF(MINUTE,GETDATE(),Online_Time)>20
DECLARE @isuser as int
SET @isuser=
(
SELECT COUNT(*) FROM BBS_Online
WHERE Online_ID=@onlineid AND Online_ID>0
)
IF @isuser<=0
BEGIN
INSERT INTO
BBS_Online
(
Online_ID,
Online_Name,
Online_Ip,
Online_GroupID,
Online_BoardID,
Online_Time
)
VALUES
(
@onlineid,
@onlinename,
@onlineip,
@onlinegroupid,
@onlineboardid,
@onlinetime
)
END
IF @isuser>0
BEGIN
UPDATE BBS_Online
SET
Online_Time=@onlinetime,
Online_BoardID=@onlineboardid
WHERE Online_ID=@onlineid
END
GO
为此我写了个存储过程
其中Online_ID 代表了用户的ID,我用户ID是同用户名分开的啦。这个ID也是标志用户唯一的一个值。所以我作为传入参数进入onlineid ,
其中onlinename 表示了用户名,
其中对于游客,我让游客的ID统一为0,游客名统一为“游客”。
我的总体思想就是基本在每个页面都调用这样的存储过程。
让每个版块进入就开始统计人数。在存储过程中比较如果是会员的话,那么他的ID就大于0。查找表看看是否存在这样的用户。如果存在那么更新她的ONLINE时间,以及版块的ID。如果不存在那么新加一个。如果是游客,那么它的ID为0,直接插入进表单。
同时在一开始的时候比较一下,当前时间同存储的时候如果在20分钟内用户无活动,那么从在线表里面删除用户。
当然这个时间可以自己设定,我为了让看上去用户人多点,所以呵呵。当然这样统计还不完善,没有精确的统计。不过也满足了日常的需求。估计你还有更好的,讨论一下阿坝。
CREATE PROCEDURE Pr_UpdateOnline
(
@onlineid int,
@onlinename varchar(200),
@onlineip varchar(100),
@onlinegroupid int,
@onlineboardid int,
@onlinetime datetime
)
AS
DELETE FROM BBS_Online
WHERE
DATEDIFF(MINUTE,GETDATE(),Online_Time)>20
DECLARE @isuser as int
SET @isuser=
(
SELECT COUNT(*) FROM BBS_Online
WHERE Online_ID=@onlineid AND Online_ID>0
)
IF @isuser<=0
BEGIN
INSERT INTO
BBS_Online
(
Online_ID,
Online_Name,
Online_Ip,
Online_GroupID,
Online_BoardID,
Online_Time
)
VALUES
(
@onlineid,
@onlinename,
@onlineip,
@onlinegroupid,
@onlineboardid,
@onlinetime
)
END
IF @isuser>0
BEGIN
UPDATE BBS_Online
SET
Online_Time=@onlinetime,
Online_BoardID=@onlineboardid
WHERE Online_ID=@onlineid
END
GO
相关文章推荐
- java创建一个统计在线人数的监听器
- 求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
- 监听器统计网站在线人数与在线会员数
- java使用监听器实现一个统计网站在线人数的示例
- 使用监听器实现一个统计网站在线人数的示例
- ASP.NET一个简单的在线人数统计办法
- 一个实用的FSO-实时统计在线人数
- 如何处理多人同时登录同一个账号以及如何统计在线人数和访问量?
- 一个实用的FSO-实时统计在线人数
- 算法设计:统计一个人气论坛的某时刻在线人数分布
- 求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
- 一个实用的FSO-实时统计在线人数
- c# 统计在线会员人数
- 对jsp的一个小结(8)使用servlet控制新闻管理、使用过滤器(解决乱码)和监听器(统计在线用户人数)
- 求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
- 使用监听器实现一个统计网站在线人数的示例
- Discuz!X3 修改在线人数在线会员以及统计数据的方法
- 一个实用的FSO-实时统计在线人数
- php实现统计网站在线人数的方法
- [java]HttpSessionListener实现统计在线人数