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 相关文章推荐
基于mysql的论坛(2)
Oct 09 PHP
用PHP实现Ftp用户的在线管理的代码
Mar 06 PHP
理解和运用PHP中的多态性[译]
Aug 02 PHP
PHP统计二维数组元素个数的方法
Nov 12 PHP
跟我学Laravel之请求(Request)的生命周期
Oct 15 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
Jan 07 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
Jul 25 PHP
php使用正则表达式去掉html中的注释方法
Nov 03 PHP
Laravel学习教程之IOC容器的介绍与用例
Aug 15 PHP
浅谈PHP实现大流量下抢购方案
Dec 15 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 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
PHP比较运算符的详细介绍
Sep 29 #PHP
You might like
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
PHP二维数组排序的3种方法和自定义函数分享
2014/04/09 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
php连接与操作PostgreSQL数据库的方法
2014/12/25 PHP
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
JavaScript实现带标题的图片轮播特效
2015/05/20 Javascript
微信端开发--登录小程序步骤
2017/01/11 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
p5.js临摹动态图形实现方法详解
2019/10/23 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
python使用百度翻译进行中翻英示例
2014/04/14 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python中xrange与yield的用法实例分析
2017/12/26 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
python3.6编写的单元测试示例
2019/08/17 Python
使用python去除图片白色像素的实例
2019/12/12 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
电子专业毕业生自我鉴定
2014/01/22 职场文书
戒赌保证书
2015/05/11 职场文书
车辆管理制度范本
2015/08/05 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
简历自我评价范文
2019/04/24 职场文书
javascript实现计算器功能详解流程
2021/11/01 Javascript
Vue.Draggable实现交换位置
2022/04/07 Vue.js
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript