主题:  我的php的在线统计方案,望大家提出意见.....谢谢

boy21cn

职务:普通成员
等级:1
金币:0.0
发贴:10
注册:2001/3/10 9:34:45
#12001/11/30 16:46:11
声明:本人对php只是略知一二,有不对的地方请更正.
设计思路:利用online的数据表和session一起来解决在线用户(包括游客和注册用户)的统计。
设计准备:在数据库中建立一个存放在线用户信息的online数据表,字段可包括
create table online(
id int(8) default'0' not null auto_increment,
user varchar(16),
randid int(10),
reg tinyint(1) default'0',
timeto datetime,
);//其中user用来存放注册用户的用户名,randid用来标识游客),timeto存放用户超时的时间
变量约定:username为注册用户的用户名(仅可存在于session中)
randid为游客用户的标识号(仅可存在于session中)
//////////////////////////////////////////////////////////////////////
处理步骤关键)
㈠session开始,
㈡删除online表中timeto时间比现在时间小的表目(即超时用户)
㈢判断session中是否有username变量
①session中存在username变量的值,则判断在online的数据表中是否存在user字段的值等于变量username的值
A,online表中有某个表目值等于username,则更新online表中该用户的timeto时间。
B,online表中没有表目等于username,则结束username的session,建立一个randid的session,其中reg字段设置为0,user字段设置为空。
②session中不存在username变量的值,则判断session中是否存在randid的值。
A,session中存在randid的值,则判断在online表中是否存在randid字段等于$randid变量的值
⑴online表中存在一个字段值等于$randid的值,则更新online表中该用户的timeto时间。
⑵online表中没有表目的值等于$randid的值,则将这个randid及相关值插入数据表online中。
B,session中不存在randid的值,则建立一个新的session,其中记录的是randid变量,且插入到数据表online中去。
///////////////////////////////////////////////////////////////
至此结束了online的处理...
请大家赐教,
QQ:886513
Email:cto@51sleep.com

编辑历史:[这消息被boy21cn编辑过(编辑时间2001-12-17 12:11:35)]


boy21cn

职务:普通成员
等级:1
金币:0.0
发贴:10
注册:2001/3/10 9:34:45
#22001/12/17 12:12:02
我写了一大段,怎都没人提个意思什么的??



5D荣誉斑竹

职务:普通成员
等级:2
金币:1.0
发贴:400
注册:2001/5/27 23:27:59
#32001/12/17 19:37:37
意思是不错的,稍麻烦点
看 《php核心编程》 有只用数据库的例子

下面的帖子中有我的源代码



BLTF

职务:普通成员
等级:1
金币:0.0
发贴:20
注册:2000/12/12 21:49:45
#42001/12/18 18:37:10
斑竹那个类,不错~~
用起来很方便~~~~~