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的FTP学习(一)[转自奥索]
Oct 09 PHP
PHP 多维数组排序实现代码
Aug 05 PHP
php+jquery编码方面的一些心得(utf-8 gb2312)
Oct 12 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
Oct 31 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
php导入导出excel实例
Oct 25 PHP
destoon调用自定义模板及样式的公告栏
Jun 21 PHP
Thinkphp中数据按分类嵌套循环实现方法
Oct 30 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
PHP socket 模拟POST 请求实例代码
Jul 18 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
May 23 PHP
简单实用的PHP文本缓存类实例
Mar 22 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+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
Three.js基础部分学习
2017/01/08 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
Python程序中设置HTTP代理
2016/11/06 Python
TensorFlow实现卷积神经网络CNN
2018/03/09 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
python变量的存储原理详解
2019/07/10 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
html Table 表头固定的实现
2019/01/22 HTML / CSS
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
行政办公员自我评价分享
2013/12/14 职场文书
教师三严三实学习心得体会
2014/10/11 职场文书
党员民主评议自我评价
2014/10/20 职场文书
单位政审意见范文
2015/06/04 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
python 利用PyAutoGUI快速构建自动化操作脚本
2021/05/31 Python