热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

phpsession过期时间问题

用session.gc_maxlifetime设置的话,概率是gc_probabilitygc_divisor;不明白为什么要这个规定;这个不明白原理发现session会监视用户是否活动,然后会自动更新session文件的最后修改时间。所以写了一...
session.gc_maxlifetime 设置的话,概率是 gc_probability/gc_pisor; 不明白为什么要这个规定;这个不明白原理

发现 session 会监视用户是否活动,然后会自动更新 session 文件的最后修改时间。

所以写了一个 function 读取 session 文件的最后修改时间,然后跟现在时间对比,如果大于设定的过期时间,假设是 10 分钟。就清空对应 session 的信息。这样可以吗?

有没有更好的方法?

ps:我是指不活动情况下过期时间

ps:我的问题没有考虑到为每个session的值设独立过期时间问题;

回复内容:

session.gc_maxlifetime 设置的话,概率是 gc_probability/gc_pisor; 不明白为什么要这个规定;这个不明白原理

发现 session 会监视用户是否活动,然后会自动更新 session 文件的最后修改时间。

所以写了一个 function 读取 session 文件的最后修改时间,然后跟现在时间对比,如果大于设定的过期时间,假设是 10 分钟。就清空对应 session 的信息。这样可以吗?

有没有更好的方法?

ps:我是指不活动情况下过期时间

ps:我的问题没有考虑到为每个session的值设独立过期时间问题;

推荐你看看 @Laruence 大神的文章 如何设置一个严格30分钟过期的Session

再附另一篇文章: 深入理解PHP原理之Session Gc的一个小概率Notice

PHP中SESSION过期,指的是,超过多少时间不活动,则过期。 如果用户有活动,每次活动时session都会重新write一次。即你说的会自动更新最后的修改时间。 比如,session设置20分钟过期,用户每分钟刷新一次,连续刷新60次,那么一个小时他还是在线的。因为他没有超过20分钟未活动。

看你的说法,你想指定让一个人在指定的时间内过期?即无论他是否活动?到达20分钟即退出? 如果是这样,你设置session.COOKIE_maxlife = 1200 即可。 因为session的session_id传递是使用COOKIE传递的,这样设置后,session_id在COOKIE中存活20分钟后过期,再刷新时,服务器会重新分配一个session_id,他就掉线了。

PS. 这其实也是一个PHP网站中常见的,不愿见的,用户会莫名掉线的问题分析。

设置session handle为memcache或者redis之类,即session的存储介质为nosql数据库,然后在此类介质中存储session值,设定严格的过期时间,这个是最精确的

跟问题没关系。自己封装的session,不用php自带的。莫踩。。

推荐阅读
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • GAMETECH腾讯云游戏行业技术沙龙成都站圆满落幕
    11月13日,由腾讯云主办、游戏茶馆协办的2020年首场GAME-TECH腾讯云游戏行业技术沙龙在成都圆满落幕。本次沙龙邀请了腾讯云游戏行业解决方案总监宋永周、腾讯云游戏行业高级解决方案架构师曾梓恩、腾讯云游戏行业高级产品架构师郑晓曦、腾讯云游戏行业高级解决方案架构师温球良和天美L1(王者荣耀)服务器技术副总监杨光,为参会同行们带来了干货满满的技术建议。本文介绍了腾讯云游戏云的优势和为不同游戏研运场景提供的服务。腾讯云在中国游戏云服务市场领跑,成为众多游戏开发者的合作伙伴。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了关系型数据库和NoSQL数据库的概念和特点,列举了主流的关系型数据库和NoSQL数据库,同时描述了它们在新闻、电商抢购信息和微博热点信息等场景中的应用。此外,还提供了MySQL配置文件的相关内容。 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 本文介绍了如何使用call_user_func_array函数向Redis中添加有序列表或集合。该函数可以接受一个数组作为参数,第一项是要操作的有序列表或集合的键,后续的项目是排序权重和值的交替。通过该函数,可以方便地向Redis中添加多个元素,并指定它们的排序权重。 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • Redis的默认端口、数据库使用和多端口配置
    本文介绍了Redis的默认端口、数据库使用和多端口配置的方法。通过选择不同的数据库和使用flushdb命令可以实现对不同数据库的访问和清除数据。同时,本文还介绍了在同一台机器上启用多个Redis实例的方法,并讨论了配置认证密码的步骤和注意事项。 ... [详细]
  • MySQL笔记_MySQL笔记1|数据库17问17答
    本文由编程笔记#小编为大家整理,主要介绍了MySQL笔记1|数据库17问17答相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
author-avatar
mobiledu2502901583
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有