mysql phpsessid_PHPSESSID 过期问题
停留N分钟,刷新PHPSESSID变了,登陆的用户也就自然退出了
现在问题是找不到导致PHPSESSID变的原因
session.cookie_lifetime = 0
ps:ini_set('session.use_cookies', 1);//使用COOKIE保存SESSIONID的方式
ini_set('session.cookie_domain', 'abc.com');
回复讨论(解决方案)
用的thinkphp 框架 3.23<?php
'SESSION_OPTIONS'=>array('type'=> 'db',//session采用数据库保存
'expire'=>7200,//session过期时间,如果不设就是php.ini中设置的默认值
),
'SESSION_TABLE'=>'v4_session', //必须设置成这样,如果不加前缀就找不到数据表,这个需要注意
?>
session一定要用session_set_save_handler重写.
其实你设定过期时间一年后,但是其他没有保存为一年后的用户还会触发session的gc,从而强制回收你的session.
两种方法重写:
1. 存储redis,mysql等数据库, 过期时间你自己控制.
2. 存储文件,我的技巧是强制修改session文件的时间为未来的时间,这样其他用户触发gc后就没法回收你的session文件了.
存的数据,session是跟随cookie的,问题是cookie这边sessid过期换掉了,而不是session过期
session.gc_maxlifetime = 1440; 指定最后一次访问后的 1440 秒失效
但是否真的失效,取决于
session.gc_probability 和 session.gc_pisor 比值(失效概率)
对于 thinkphp,你有 'expire'=>7200
那么应在最后一次访问的 7200 秒(2小时)后失效
如果不是这样,那就放弃 thinkphp
很程序没关系,程序存到数据库的都是正常的。7200是有效的
是因为PHPSESSID 值失效(a变b),a在数据库里是存在,但b是不存在的,所以相当导致用户的整个session失效
服务器上session失效,网页刷新当然重新分配了一个sessionid啊
session.cookie_lifetime=0指的是在浏览器关闭时删除cookie,除非手动删或者被其他软件强清了
不知道对不对,PHPSESSID 是根据cookie传到客户端,用来判断用户的唯一性,如果cookie设置0秒,会自动清空,客户端没有phpsessid,服务端当然会重新分配一个,所以就注销了。
服务器session没有失效,存的数据库。。。
是因为存在coookie 的 phpsessid 值变了,而这个phpsessid在数据库里是没数据的
对的,问题是系统配置是2个小时,有时候10分钟有时候1个小时PHPSESSID就被重新分配了(同一个页面一直刷新)
找不出原因
session和cookies那点事说难不难, 说简单也不简单, 整到完美磨合,俩合作完美无间要仔细研究下,不过封装好以后就省事了.
你看看你是不是session_id($_COOKIES['sess_id']);没有这样接管.
还有cookies的作用域问题,作用路径问题,查查setcookie参数你就知道了...
正常不会这样,既然tp设置了7200实效,根据session.gc处理,只会在7200秒后执行清除
你可以检查是否有其他程序导致session实效。
之前做法是,把session保存在cookies,如果判断session失效但cookie没有实效,则把cookie复制入session处理。
已经找出问题<?php
function session($name='',$value='') {
ini_set('session.gc_maxlifetime', $name['expire']);
//ini_set('session.cookie_lifetime', $name['expire']);}
?>
是TP的这里重写了session存在cookie的生存周期导致sessionid在cookie的存活周期是我们设置的那个参数
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
mysql phpsessid_PHPSESSID 过期问题相关推荐
- mysql密码过期设置,mysql5.6.X和mysql8.0.X密码过期策略
mysql密码过期策略设置 关于mysql5.6.X和mysql8.0.X配置密码过期策略的学习心得 一.mysql5.6.X配置密码过期策略 网上说的方式,但这不适用于低于5.7.4版本 二.mys ...
- mysql 删除过期日志_【转】对mysql日志进行操作的总结包括 启用,过期自动删除 等...
近段时间一直在研究mysql的日志系统,在网上看了N多mysql日志操作的文章,但都过于零乱,为了让自己以后不再搞忘,特作出以下总结: 1. 以前我错误的认为mysql的日志可以恢复到任何时间的状态, ...
- mysql密码过期问题
密码自动过期是mysql 5.7.4引入的新功能. 由参数default_password_lifetime控制.从5.7.4到5.7.10,默认是360天.设置为0,即不开启密码过期设置. 取消某个 ...
- mysql binlog 过期_mysql清理过期binlog堵塞数据库
背景 线上有一套数据库业务迁移走一段时间,过了一周业务又接入进来,运行几分钟后突然出现数据库10秒左右无法写入,上去排查发现此时出现了几百G binlog的过期删除 线上环境 mysql_versio ...
- mysql密码过期your password has expired.To log in you must change itusing a client that supports expired
1.首先进入你的mySQL安装的bin目录下: 2.接着敲mysql -uroot -p 进入mysql中 3.这个时候就可以开始修改你的密码了: set password = password('1 ...
- MySQL密码过期ERROR 1862 (HY000)
报错内容:ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that ...
- mysql密码过期设置
1.可以在mysql的配置文件中设置一个默认值,这会使得所有mysql用户的密码过期时间都为90天,mysql会从启动时开始计算时间.my.cnf配置如下: [mysqld]default_passw ...
- mysql密码过期解决办法,mysql密码永不过期
1.进入到数据库服务器,windows需要进入到bin目录,linux应该是任意目录即可(但需要账号有权限).以windows为例:C:\Program Files\MySQL\MySQL Serve ...
- mysql密码过期,修改密码,设置永不过期
一.密码过期,修改密码 1.正常密码过期需要执行以下操作解决:(1)切换到超级用户 sudo su(2)使用原始密码登录mysql sh-3.2# ./mysql -uroot -pxxxxx(3)m ...
最新文章
- IntelliJ IDEA导入多个eclipse项目到同一个workspace下
- vs2010 调试窗口debugger UTF8 显示汉字 乱码
- 数据人看Feed流-架构实践
- await原理 js_「速围」Node.js V14.3.0 发布支持顶级 Await 和 REPL 增强功能
- Google再次从官方商店下架伪装成合法程序的恶意应用
- 设计模式学习---(1)简介
- 前端证券项目_非科班二本前端大厂面试的心路历程和总结(腾讯、头条、阿里、京东)...
- Q91:真实地模拟透明材质(Realistic Transparency)
- Catalyst 65xx系列交换机配置(Native IOS)
- packagereference 里面的资产是怎么回事?
- SpringBoot中多种Filter配置方式
- 车载多传感器融合定位方案:GPS +IMU+MM
- TMEA:源于音乐,高于盛典
- 关于CS61b sp21中proj0的问题
- 列出5个python标准库_5个常用 Python 标准库
- GB50174-2008《电子信息系统机房设计规范》
- 如何设置 RecyclerView Item内子控件点击事件
- .Delphi7升级到Delphi 2010、Delphi XE、Delphi XE2总结
- 中国量化融业解金工计机计金领就指
- 把数字翻译成字符串python_把数字翻译成字符串