设置一个严格的SESSION过期时间
认识一:当我们需要更改session生存时间的时候通行的做法是更改php.ini文件中
1: ; Name of the session (used as cookie name).
2: session.name = PHPSESSID
3:
4: ; Initialize session on request startup.
5: session.auto_start = 0
6:
7: ; Lifetime in seconds of cookie or, if 0, until browser is restarted.
8: session.cookie_lifetime = 0 //(单位为秒)
9:
10: ; The path for which the cookie is valid.
11: session.cookie_path = /
12:
13: ; The domain for which the cookie is valid.
14: session.cookie_domain =
session.cookie_lifetime这项的数值,数值为0即关闭浏览器即cookie信息失效,如果是用户登录信息,那么关闭页面在打开就需要重新登录。
当将此设置为一定的值后,在指定的秒数内重新打开该页面,仍旧保留以前的 cookie 数据并且自动登陆。
再指定有效生存时间的情况下另一种不常见的做法是:我们在浏览器中挂载一段js脚本使用setInterval轮询的访问网站页面来延长session存活时间,不过这是在没有权限操纵服务器的情况下会采用的做法。
额外的说明:
PHP中设置的session时间测试过还是相当准确的,产生的session文件如果已经过期而没有被gc回收(也就是session的概率销毁清除)文件本身还保留在服务器上然后已经过期,服务器是不会去使用这个过期session文件中的session信息的。对于使用session控制的某些保持登录状态时间类信息可以放心大胆的使用。
项目中的做法:
session作为保持回话信息的重要工具怎么说都会开启,在整个程序的入口文件中我们程序启动即调用 session_set_cookie_params();
session_set_cookie_params()的用法说明:
Set cookie parameters defined in the php.ini file. The effect of this function only lasts for the duration of the script. Thus, you need to call session_set_cookie_params() for every request and before session_start() is called.
或者入口文件中实例化出来一个session_base()对象
class session_base()
{
var $max_life_time = 1440; // SESSION 过期时间||设为0即关闭浏览器即销毁session
var $my_session_name = 'logonmy'
var $session_cookie_path = '/';//SESSION存储路径
var $session_cookie_domain = '';//这里为空的话即为当前站点域名,也可以指定作用域名[.demo.com]
var $session_cookie_secure = false;//一般都为false
public function __construct()
{
$this->_session_base();
}
private function _session_base()
{
//session_name($this->$my_session_name);//如果我们不想使用PHPSESSID作为session名称我们可以改成于本站相关或者喜欢的名称
session_set_cookie_params($this->$max_life_time,$this->$session_cookie_path,$this->$session_cookie_domain,$this->$session_cookie_secure);
session_start();
}
}
其实说白了不管session_get_cookie_params();或者session_set_cookie_params();都是对配置文件中session相关属性读和写。
认识二:关于session的垃圾回收机制
还是来自php.ini中的定义
1: ; Define the probability that the 'garbage collection' process is started
2: ; on every session initialization.
3: ; The probability is calculated by using gc_probability/gc_divisor,
4: ; e.g. 1/100 means there is a 1% chance that the GC process starts
5: ; on each request.
6:
7: session.gc_probability = 1
8: session.gc_divisor = 100
9:
10: ; After this number of seconds, stored data will be seen as 'garbage' and
11: ; cleaned up by the garbage collection process.
12: session.gc_maxlifetime = 1440
这个设置:session在产 生后的1440秒后失效,会被认为garbage(垃圾) ,session.gc_probability和session.gc_divisor作为分子和分母,session.gc_probability/session.gc_divisor 得到启动垃圾回收gc进程(删除已经超出gc_maxlifetime的session文件)的发生概率,值得一提的是 为什么不把session.gc_probability和session.gc_divisor分别设置为100和100即为100%的发生概率,这是因为php召唤gc进程需要耗费计算资源,产生不必要的开销。所以一般都会保留默认值。对于大型或者大访问量的网站,还会降低这一概率。
留意:php.ini中 session.cookie_lifetime 和 session.gc_maxlifetime 其中session.cookie_lifetime是以秒数指定了发送到浏览器的 cookie 的生命周期。session.gc_maxlifetime指定了服务器session文件生存周期。最好将两个设置成相同值。
参考:
1:关于 Session Time Out 的时间控制总结
2:session的垃圾回收机制
3:http://www.111cn.net/phper/php/45077.htm
4:http://home.sgnet.cc/blog/?p=91
设置一个严格的SESSION过期时间的更多相关文章
- asp.net web.config 设置Session过期时间
在Asp.net中,可以有四处设置Session的过期时间:(原文作者:望月狼地址:http://www.cnblogs.com/wangyuelang0526/) 一.全局网站(即服务器)级 IIS ...
- Asp.NET设置Session过期时间的四种方式
在Asp.net中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会话超时(分钟)-设置为120,即为2小时,即120分 ...
- 转:设置session过期时间
在Asp.net应用中,很多人会遇到Session过期设置有冲突.其中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会 ...
- 关于web会话中的session过期时间的设置
关于web会话中的session过期时间的设置 1.操作系统: 步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉右键“属性”——〉主目录——〉配置— ...
- php中实现精确设置session过期时间的方法
http://www.jb51.net/article/52309.htm 大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下sessio ...
- 转:php中实现精确设置session过期时间的方法
原文来自于:http://www.jb51.net/article/52309.htm 大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下 ...
- C#如何设置session过期时间
1.操作系统 步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉 右键“属性”——〉主目录——〉配置——〉选项——〉启用会话状态——〉会话超时(在 ...
- 为什么一段时间后网站后台自动退出 php中session过期时间设置
修改php配置文件中的session.gc_maxlifetime.如果想了解更多session回收机制,继续阅读.(本文环境php5.2) 概述:每一次php请求,会有1/100的概率(默认值)触发 ...
- asp中设置session过期时间方法总结
http://www.jb51.net/article/31217.htm asp中设置session过期时间方法总结 作者: 字体:[增加 减小] 类型:转载 asp中默认session过期时间 ...
随机推荐
- vue-cli中的build.js配置文件详细解析
转载自:https://www.cnblogs.com/ye-hcj/p/7096341.html这是vue-cli脚手架工具的生产环境配置入口 package.json中的"build&q ...
- python之路 堡垒机paramiko
paramiko 1.安装 pip3 install paramiko 二.使用 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko # 创建S ...
- HDU - 6393 Traffic Network in Numazu (LCA+RMQ+树状数组)
这道题相当于将这两题结合: http://poj.org/problem?id=2763 http://codeforces.com/gym/101808/problem/K 题意:有N各点N条边的带 ...
- java sql解析
https://github.com/JSQLParser/JSqlParser 淘宝博客:http://www.searchtb.com/category/%E6%90%9C%E7%B4%A2%E5 ...
- 【Head First Servlets and JSP】笔记20:EL以及<jsp:useBean ....>的补充
1.EL的英文是Expression Language,译成中文就是“表达式语言”.这是一种给前端程序员使用的脚本语言,EL与Java表达式相比并没有什么“天壤之别”,在后端程序员看来多少有点“多此一 ...
- 【Java】流与文件(端口 & 文件读写对象)
概述: 1.input和output是相对于内存而言的.输入(input)就是写入到内存里,输出(output)就是把内存里的东西写到外面. 2.操作内存里的东西非常便利,要么声明变量,要么new对象 ...
- InterruptedException异常
本文总结自:https://blog.csdn.net/asdfsadfasdfsa/article/details/78808131 什么样的方法会抛出InterruptedException异常? ...
- Spring_使用外部属性文件
beans-properties.xml <?xml version="1.0" encoding="UTF-8"?><beans xmlns ...
- 谈谈对Canal(增量数据订阅与消费)的理解
概述 canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了mysql(也支持mariaDB). 起源:早期,阿里巴巴B2B公司 ...
- JAVA基础补漏--抽象类
抽象类使用的四点注意事项: 1.抽象类不能创建对象. 2.抽象类可以没有抽象方法,但有抽象方法一定得是抽象类. 3.抽象类可以有构造方法,是供子象创建对象时,初始化父类成员使用的. 4.抽象类的子类, ...