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 相关文章推荐
删除无限级目录与文件代码共享
Jul 12 PHP
ADODB的数据库封包程序库
Dec 31 PHP
php 获取客户端的真实ip
Nov 30 PHP
php基于str_pad实现卡号不足位数自动补0的方法
Nov 12 PHP
PHP+MySQL实现的简单投票系统实例
Feb 24 PHP
PHP文件缓存smarty模板应用实例分析
Feb 26 PHP
PHP获取当前文件的父目录方法汇总
Jul 21 PHP
php基于curl重写file_get_contents函数实例
Nov 08 PHP
简单谈谈PHP面向对象之标识对象
Jun 27 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 PHP
Windows服务器中PHP如何安装redis扩展
Sep 27 PHP
php将xml转化对象的实例详解
Nov 17 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类与对象中的private访问控制的疑问
2012/11/01 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
用表格输出1-1000之间的数字实现代码(附特效)
2013/04/21 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
jquery小火箭返回顶部代码分享
2015/08/19 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
JavaScript canvas实现跟随鼠标移动小球
2021/02/09 Javascript
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
2015/05/22 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
python 自动批量打开网页的示例
2019/02/21 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
django获取from表单multiple-select的value和id的方法
2019/07/19 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
python-tornado的接口用swagger进行包装的实例
2019/08/29 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
8种常用的Python工具
2020/08/05 Python
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
美国韩国化妆品和护肤品购物网站:Beautytap
2018/07/29 全球购物
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
工作决心书范文
2014/03/11 职场文书
博士生专家推荐信
2014/09/26 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
只用Python就可以制作的简单词云
2021/06/07 Python
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js