我可以给你一个思路:
在很公共的页面放一个程序,记录用户的活动,记下时间,
如果用户20分钟还没有修改自己的时间,就说明他已经推出了!
这个是我以前写的一个存储过程,用来记录在线用户的,很好看懂!
自己去研究研究,可以写出更好的存储过程的。
create proc OnLine
(
@SessionID varchar(30),
@UserID varchar(30),
@IP varchar(20),
@Browser varchar(50)='',
@PlatForm varchar(50)=''
)
as
if exists(select * from OnLines where SessionID=@SessionID and Datediff(n,LastTime,GetDate())<=20)
begin
update
OnLines
set
LastTime=GetDate(),
UserID=@UserID
where
SessionID=@SessionID and Datediff(n,LastTime,GetDate())<20
end
else
begin
insert into
OnLines(SessionID,UserID,IP,Browser,PlatForm)
values
(@SessionID,@UserID,@IP,@Browser,@PlatForm)
end
delete from
OnLines
where
SessionID!=@SessionID and Datediff(n,LastTime,GetDate())>20
declare @OnLineNO int,@MaxOnLineNO int
select @MaxOnLineNO=MaxNO from MaxUsersOnLine where MaxID=1
set @OnLineNO=(select count(*) from OnLines)
if @OnLineNO>@MaxOnLineNO
update
MaxUsersOnLine
set
MaxNO=@OnLineNO,
OnLineDate=getdate()
where
MaxID=1
GO
在很公共的页面放一个程序,记录用户的活动,记下时间,
如果用户20分钟还没有修改自己的时间,就说明他已经推出了!
这个是我以前写的一个存储过程,用来记录在线用户的,很好看懂!
自己去研究研究,可以写出更好的存储过程的。
create proc OnLine
(
@SessionID varchar(30),
@UserID varchar(30),
@IP varchar(20),
@Browser varchar(50)='',
@PlatForm varchar(50)=''
)
as
if exists(select * from OnLines where SessionID=@SessionID and Datediff(n,LastTime,GetDate())<=20)
begin
update
OnLines
set
LastTime=GetDate(),
UserID=@UserID
where
SessionID=@SessionID and Datediff(n,LastTime,GetDate())<20
end
else
begin
insert into
OnLines(SessionID,UserID,IP,Browser,PlatForm)
values
(@SessionID,@UserID,@IP,@Browser,@PlatForm)
end
delete from
OnLines
where
SessionID!=@SessionID and Datediff(n,LastTime,GetDate())>20
declare @OnLineNO int,@MaxOnLineNO int
select @MaxOnLineNO=MaxNO from MaxUsersOnLine where MaxID=1
set @OnLineNO=(select count(*) from OnLines)
if @OnLineNO>@MaxOnLineNO
update
MaxUsersOnLine
set
MaxNO=@OnLineNO,
OnLineDate=getdate()
where
MaxID=1
GO