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 相关文章推荐
初探PHP5
Oct 09 PHP
php.ini 中文版
Oct 28 PHP
php实现mysql同步的实现方法
Oct 21 PHP
php数据库配置文件一般做法分享
Jul 07 PHP
PHP中isset()和unset()函数的用法小结
Mar 11 PHP
PHP三元运算的2种写法代码实例
May 12 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 PHP
php单一接口的实现方法
Jun 20 PHP
浅析php设计模式之数据对象映射模式
Mar 03 PHP
php flush无效,IIS7下php实时输出的方法
Aug 25 PHP
Laravel 的数据库迁移的方法
Jul 31 PHP
php 获取xml接口数据的处理方法
May 31 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分页思路以及在ZF中的使用
2012/05/30 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
JSON相关知识汇总
2015/07/03 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
javascript自执行函数
2017/02/10 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
python脚本爬取字体文件的实现方法
2017/04/29 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
python+opencv实现阈值分割
2018/12/26 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
python打开音乐文件的实例方法
2020/07/21 Python
如何将json数据转换为python数据
2020/09/04 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
护理专业自我鉴定
2014/01/30 职场文书
高中生的自我评价
2014/03/04 职场文书
新课培训心得体会
2014/09/03 职场文书
旷课检讨书范文
2014/10/30 职场文书
女性健康知识讲座通知
2015/04/23 职场文书
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python