认识一:当我们需要更改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过期时间的更多相关文章

  1. asp.net web.config 设置Session过期时间

    在Asp.net中,可以有四处设置Session的过期时间:(原文作者:望月狼地址:http://www.cnblogs.com/wangyuelang0526/) 一.全局网站(即服务器)级 IIS ...

  2. Asp.NET设置Session过期时间的四种方式

    在Asp.net中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会话超时(分钟)-设置为120,即为2小时,即120分 ...

  3. 转:设置session过期时间

    在Asp.net应用中,很多人会遇到Session过期设置有冲突.其中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会 ...

  4. 关于web会话中的session过期时间的设置

    关于web会话中的session过期时间的设置 1.操作系统: 步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉右键“属性”——〉主目录——〉配置— ...

  5. php中实现精确设置session过期时间的方法

    http://www.jb51.net/article/52309.htm 大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下sessio ...

  6. 转:php中实现精确设置session过期时间的方法

    原文来自于:http://www.jb51.net/article/52309.htm 大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下 ...

  7. C#如何设置session过期时间

    1.操作系统  步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉  右键“属性”——〉主目录——〉配置——〉选项——〉启用会话状态——〉会话超时(在 ...

  8. 为什么一段时间后网站后台自动退出 php中session过期时间设置

    修改php配置文件中的session.gc_maxlifetime.如果想了解更多session回收机制,继续阅读.(本文环境php5.2) 概述:每一次php请求,会有1/100的概率(默认值)触发 ...

  9. asp中设置session过期时间方法总结

    http://www.jb51.net/article/31217.htm asp中设置session过期时间方法总结 作者: 字体:[增加 减小] 类型:转载   asp中默认session过期时间 ...

随机推荐

  1. ES集群重启

    操作步骤: 1. Disable shard allocation curl -XPUT 'localhost:9200/_cluster/settings?pretty' -d '{  " ...

  2. java byte为何范围是-128~127

    从我们接触Java的时候,就被告知基础类型byte是一个字节,占8位,表示的范围是-128~127.那么为什么会这个范围呢?   咱们先回顾一下计算机基础: 1. 在计算机内部数据的存储和运算都采用二 ...

  3. 用python实现0到9之间10个数字排列不重复的个数

      """ product 笛卡尔积 permutations 排列 combinations 组合,没有重复 combinations_with_replacement ...

  4. 【笔记】Maven使用入门

    参考<maven实战> 1.编写POM 2.编写主代码 3.编写测试代码 4.打包和运行 具体如下: 1.编写POM. <!-- XML头,指定了该xml文档的版本和编辑方式 --& ...

  5. HGVS,非HGVS形式的突变描述解释

    NG_012232.1(NM_004006.1):c.93+1G>T: 在该转录本NM_004006.1外显子的第93个碱基的下1个碱基(属于内含子)G变为T. NG_012232.1(NM_0 ...

  6. 20145201《Java程序设计》第九周学习总结

    20145201 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层 ...

  7. Timer in C#

    https://docs.microsoft.com/en-us/dotnet/api/system.timers.timer?view=netframework-4.7.2 Be aware tha ...

  8. 初入Spring-boot(一)

    一.利用eclipse快速创建Spring-boot项目 1.首先去http://start.spring.io网站,勾选所需要的starter,如图: 选择完之后下载该文件,打开后发现是一个正常的m ...

  9. BZOJ4455/UOJ185 [Zjoi2016]小星星

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  10. 自己用java实现飞鸽传书 2 - 实现文件传输

    第二步:实现文件传递. 上一步只是从服务端传递了一个字符串到客户端,这次需要对代码进行调整,实现从服务端获取文件,在客户端将文件存入目标地址. 调整后的代码: 服务端: import java.io. ...