Session 失效的原因汇总及解决丢失办法


Posted in PHP onSeptember 30, 2015

昨天去GTSC面试,有面试官问我关于Session丢失之后怎么查的问题,说老实话,开发到现在很少碰到这样的情况,唯一想到的就是Session超时,还有就是做Session读写日志,发觉面试官听了之后不是很满意,汗!

不管怎么说,是个学习的好机会,今天抽空查了一下网上关于这些问题的处理方法,总结一下,希望对大家有所帮助。

顺便提一下asp中Session的工作原理:

asp的Session是具有进程依赖性的。ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序。所以当inetinfo.exe进程崩溃时,这些信息也就丢失。另外,重起或者关闭IIS服务都会造成信息的丢失。

asp.net Session的实现

asp.net的Session是基于HttpModule技术做的,HttpModule可以在请求被处理之前,对请求进行状态控制,由于Session本身就是用来做状态维护的,因此用HttpModule做Session是再合适不过了。

原因1:

bin目录中的文件被改写,asp.net有一种机制,为了保证dll重新编译之后,系统正常运行,它会重新启动一次网站进程,这时就会导致Session丢失,所以如果有access数据库位于bin目录,或者有其他文件被系统改写,就会导致Session丢失

原因2:

文件夹选项中,如果没有打开“在单独的进程中打开文件夹窗口”,一旦新建一个窗口,系统可能认为是新的Session会话,而无法访问原来的Session,所以需要打开该选项,否则会导致Session丢失

参考配置:

http://jingyan.baidu.com/article/22fe7ced78594f3002617f04.html

原因3:

似乎大部分的Session丢失是客户端引起的,所以要从客户端下手,看看cookie有没有打开

原因4:

Session的时间设置是不是有问题,会不会因为超时造成丢失

原因5:

IE中的cookie数量限制(每个域20个cookie)可能导致session丢失

原因6:

使用web garden模式,且使用了InProc mode作为保存session的方式

解决丢失的经验

1. 判断是不是原因1造成的,可以在每次刷新页面的时候,跟踪bin中某个文件的修改时间

2. 做Session读写日志,每次读写Session都要记录下来,并且要记录SessionID、Session值、所在页面、当前函数、函数中的第

几次Session操作,这样找丢失的原因会方便很多

3. 如果允许的话,建议使用state server或sql server保存session,这样不容易丢失

4. 在global.asa中加入代码记录Session的创建时间和结束时间,超时造成的Session丢失是可以在SessionEnd中记录下来的。

5. 如果有些代码中使用客户端脚本,如javascript维护Session状态,就要尝试调试脚本,是不是因为脚本错误引起Session丢失

以上内容是三水点靠木小编给大家分享的session失效的几种原因,希望对大家有所帮助。

PHP 相关文章推荐
php中cookie的作用域
Mar 27 PHP
用PHP为SHOPEX增加日志功能代码
Jul 02 PHP
zend api扩展的php对象的autoload工具
Apr 18 PHP
php 操作调试的方法
Jul 12 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
Mar 08 PHP
基于PHP的简单采集数据入库程序【续篇】
Jul 30 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
PHP利用APC模块实现大文件上传进度条的方法
Oct 29 PHP
CI框架的安全性分析
May 18 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
Jul 09 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 PHP
解决php表单重复提交实现方法
Sep 29 #PHP
php正则匹配文章中的远程图片地址并下载图片至本地
Sep 29 #PHP
php猜单词游戏
Sep 29 #PHP
PHP代码优化技巧小结
Sep 29 #PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 #PHP
PHP类的封装与继承详解
Sep 29 #PHP
PHP比较运算符的详细介绍
Sep 29 #PHP
You might like
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
RSA实现JS前端加密与PHP后端解密功能示例
2019/08/05 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
热点新闻滚动特效的js代码
2013/08/17 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
Python正则捕获操作示例
2017/08/19 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
python实现简单点对点(p2p)聊天
2017/09/13 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
Python自省及反射原理实例详解
2020/07/06 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
让IE6支持css3,让 IE7、IE8 都支持CSS3
2011/10/09 HTML / CSS
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
教师专业理论水平的自我评价分享
2013/11/09 职场文书
企业项目策划书
2014/01/11 职场文书
幼儿园美术教学反思
2014/01/31 职场文书
三好学生个人先进事迹材料
2014/05/17 职场文书
布达拉宫的导游词
2015/02/02 职场文书
教师工作证明范本
2015/06/12 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python