关于‘最近访客’的一些想法
程序员文章站
2022-03-12 23:01:31
...
[b]问题描述[/b]
最近访客功能记录个人空间被哪些用户访问过
[b]入口问题[/b]
进入用户个人空间的入口颇多
如
[list]
[*]http://xuliangyong.iteye.com
[*]http://xuliangyong.iteye.com/blog/342762
[*]http://xuliangyong.iteye.com/category/46687
[*]http://xuliangyong.iteye.com/blog/pdf
[/list]
是对所有入口都处理还是有选择的处理 根据自身环境定
[b]写数据库频率[/b]
入口确定后 接下来是将访客的id写入数据库
每次访问都写数据库是不现实的,可采用 cookie或session控制写如数据库的频率
逻辑为
[b]写数据库策略[/b]
访客可能在以前访问过我的空间 所以需要判断数据库中访客存在否
有两种方法判断
1 进攻式写入---假设访客以前访问过我的空间,直接update,返回1表示假设成立; 返回0则进行insert
2 防御式写入---先查询存在否,后进行update或insert
第一种方式有时访问1次数据库 有时访问两次
第二种方式需两次
最近访客功能记录个人空间被哪些用户访问过
[b]入口问题[/b]
进入用户个人空间的入口颇多
如
[list]
[*]http://xuliangyong.iteye.com
[*]http://xuliangyong.iteye.com/blog/342762
[*]http://xuliangyong.iteye.com/category/46687
[*]http://xuliangyong.iteye.com/blog/pdf
[/list]
是对所有入口都处理还是有选择的处理 根据自身环境定
[b]写数据库频率[/b]
入口确定后 接下来是将访客的id写入数据库
每次访问都写数据库是不现实的,可采用 cookie或session控制写如数据库的频率
逻辑为
if( !existMyCookie ){
writeDB();
writeMyCookie(expireDate);
}
[b]写数据库策略[/b]
访客可能在以前访问过我的空间 所以需要判断数据库中访客存在否
有两种方法判断
1 进攻式写入---假设访客以前访问过我的空间,直接update,返回1表示假设成立; 返回0则进行insert
2 防御式写入---先查询存在否,后进行update或insert
第一种方式有时访问1次数据库 有时访问两次
第二种方式需两次
insert into `sns_user_visitor`(host_id, visitor_id, visit_time)
select 34, 35, '2009-1-1' from dual where not EXISTS
( select id from `sns_user_visitor` where host_id = 34 and visitor_id=35);
上一篇: 关于应用调用系统权限的一些想法