在考虑session的问题上,我最终放弃了session: 1、原本的session是使用文件来管理的。文件系统的好坏直接影响session的性能,尤其当有几K人同时在线的时候,尤其突出。解决方法有两个:数据库和文件(使用哈希路径)。 2、原有session的扩展性和可控制性不好。不利于结合我现有的系统。 3、在选用数据库的时候,我并没有选择sqlite,上次我测试sqlite效率在win xp上效率没有想象中的好。
最后我选择了myql的heap表来处理session,并且把session处理和online在线用户统计结合起来。
下面给出代码为我的一个实例(没提供其他的细节了,具体使用要相应修改)
<? /** * 处理在线用户和对session的模拟 * CREATE TABLE `webqq_session` (
`sid` char( 32 ) NOT NULL , `uid` mediumint( 8 ) NOT NULL , `username` char( 80 ) NOT NULL , `ismember` tinyint( 1 ) NOT NULL , `logintime` int( 10 ) NOT NULL , `activetime` int( 10 ) NOT NULL , PRIMARY KEY ( `sid` ) ) ENGINE = HEAP DEFAULT CHARSET = gb2312 * @author:feifengxlq<http://www.phpobject.net> feifengxlq#gmail.com * @since:2006-10-23 * @copyright:http://www.phpobject.net * 注意:这个文件的使用必须和其他文件结合:比如对cookid的过滤,一些基本函数和数据库操作类 */ class session { var $mysql; var $cookie_id=''webqq_sid''; var $session=array(); var $max_time=1200;//默认最大时间为20分钟 function __construct() { $this->mysql=new module(TB_PREX.''_session'');//需要外部支持 $this->start(); } function start() { if(empty(
我为什么不使用session - 凌众科技
快速业务通道
我为什么不使用session
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-26
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
COOKIE[$this->cookie_id])) { //初始化session $this->create(); }else{ //cookie已经存在,检查是否存在数据库中 $sid=
我为什么不使用session - 凌众科技
快速业务通道
我为什么不使用session
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-26
|
content |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|
|
|
COOKIE[$this->cookie_id]; if($this->mysql->detail(''where sid=\''''.$sid.''\'''')) { //存在数据库中 $row[''activetime'']=time(); $this->mysql->update($row,''where sid=\''''.$sid.''\''''); $this->session=$this->mysql->detail(''where sid=\''''.$sid.''\'''') |