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也可以?成Shell Script
Oct 09 PHP
聊天室php&mysql(三)
Oct 09 PHP
傻瓜化配置PHP环境――Appserv
Dec 13 PHP
PHP array操作10个小技巧分享
Jun 23 PHP
php获取字符串中各个字符出现次数的方法
Feb 23 PHP
php实现递归抓取网页类实例
Apr 03 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 PHP
百度地图API使用方法详解
Aug 25 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 PHP
PHP实现的观察者模式实例
Jun 21 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
Yii框架分页技术实例分析
Aug 30 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学习笔记(三)操作符与控制结构
2011/08/06 PHP
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
PHP递归创建多级目录
2015/11/05 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
2016/10/04 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
jQuery实现动态生成年月日级联下拉列表示例
2019/05/11 jQuery
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
原生JS实现天气预报
2020/06/16 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
python实现每次处理一个字符的三种方法
2014/10/09 Python
python控制台中实现进度条功能
2015/11/10 Python
Python环境变量设置方法
2016/08/28 Python
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
python中if及if-else如何使用
2020/06/02 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
python 制作磁力搜索工具
2021/03/04 Python
电子商务专业自我鉴定
2013/12/18 职场文书
实习心得体会
2014/01/02 职场文书
大学生饮食配送创业计划书
2014/01/04 职场文书
明星员工获奖感言
2014/08/14 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
小学家长通知书评语
2014/12/31 职场文书
英语复习计划
2015/01/19 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
vue里使用create, mounted调用方法
2022/04/26 Vue.js