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 相关文章推荐
文件系统基本操作类
Nov 23 PHP
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
Jan 29 PHP
在PHP里得到前天和昨天的日期的代码
Aug 16 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
Sep 30 PHP
php时区转换转换函数
Jan 07 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
Jun 19 PHP
PHP实现简单的新闻发布系统实例
Jul 28 PHP
php文件扩展名判断及获取文件扩展名的N种方法
Sep 12 PHP
php阿拉伯数字转中文人民币大写
Dec 21 PHP
php打包网站并在线压缩为zip
Feb 13 PHP
php打乱数组二维数组多维数组的简单实例
Jun 17 PHP
如何正确配置Nginx + PHP
Jul 15 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
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
PHP计划任务、定时执行任务的实现代码
2011/04/23 PHP
PHP中PDO的错误处理
2011/09/04 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
php控制文件下载速度的方法
2015/03/24 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
js 遍历对象的属性的代码
2011/12/29 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
基于jQuery实现的旋转彩圈实例
2015/06/26 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
JavaScript中条件语句的优化技巧总结
2020/12/04 Javascript
python计算导数并绘图的实例
2020/02/29 Python
Python3+Django get/post请求实现教程详解
2021/02/16 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
班级文化标语
2014/06/23 职场文书
理财学专业自荐书
2014/06/28 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
运动会报道稿大全
2015/07/23 职场文书
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server