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 smarty函数扩展
Mar 15 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
Aug 10 PHP
php根据操作系统转换文件名大小写的方法
Feb 24 PHP
PHP PDO fetch 模式各种参数的输出结果一览
Jan 07 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
PHP定时任务获取微信access_token的方法
Oct 10 PHP
PHP运行模式汇总
Nov 06 PHP
PHP实现通过CURL上传文件功能示例
May 30 PHP
php多进程模拟并发事务产生的问题小结
Dec 07 PHP
PHP基础之输出缓冲区基本概念、原理分析
Jun 19 PHP
thinkphp5 模型实例化获得数据对象的教程
Oct 18 PHP
php多进程中的阻塞与非阻塞操作实例分析
Mar 04 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
百度实时推送api接口应用示例
2014/10/21 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
How to Auto Include a Javascript File
2007/02/02 Javascript
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
vue如何截取字符串
2019/05/06 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
详解Python中的循环语句的用法
2015/04/09 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
Python使用defaultdict读取文件各列的方法
2017/05/11 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
聘用意向书范本
2014/04/01 职场文书
法律专业自荐信
2014/06/03 职场文书
车辆工程专业求职信
2014/06/14 职场文书
委托书如何写
2014/08/30 职场文书
党员群众路线对照检查材料
2014/08/31 职场文书
国庆横幅标语
2014/10/08 职场文书
论语读书笔记
2015/06/26 职场文书
环保建议书范文
2015/09/14 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python
Python+pyaudio实现音频控制示例详解
2022/07/23 Python