php专区

 首页 > php专区 > 正则表达式 > php中设置session过期时间方法 - php会话

php中设置session过期时间方法 - php会话

分享到:
【字体:
导读:
          在apache与php的环境中默认过期时间是20分钟左右,那么我们要怎么设置session过期呢,下面看具体方法总结。我们最常用的是在php程序中设置,代...

php中设置session过期时间方法

在apache与php的环境中默认过期时间是20分钟左右,那么我们要怎么设置session过期呢,下面看具体方法总结。

我们最常用的是在php程序中设置,代码如下:

  1. if(!isset($_SESSION['last_access'])||(time()-$_SESSION['last_access'])>60) 
  2.  $_SESSION['last_access'] = time(); 
  3. ?> 

这样就搞定了,如果要设置过期的话也可以在程序中实现,代码如下:

  1. unset($_SESSION['last_access']) 或 $_SESSION['last_access']=''
  2. ?> 

session有效时间过期的机制

session.gc_maxlifetime 原来session 过期是一个小概率的事件,分别使用session.gc_probability和session.gc_divisor 来确定运行session 中gc 的概率  session.gc_probability和session.gc_divisor的默认值分别为 1和100,分别为分子和分母,所以session中gc的概率运行机会为1%,如果修改这两个值,则会降低php的效率,所以这种方法是不对的!

所以,修改php.ini文件中的gc_maxlifetime变量就可以延长session的过期时间了:(例如,我们把过期时间修改为86400秒),代码如下:

session.gc_maxlifetime = 86400

然后,重启你的web服务(一般是apache)就可以了。

session“回收”何时发生?

默认情况下,每一次php请求,就会有1/100的概率发生回收,所以可能简单的理解为“每100次php请求就有一次回收发生”,这个概率是通过以下参数控制:

  1. #概率是gc_probability/gc_divisor 
  2. session.gc_probability = 1 
  3. session.gc_divisor = 100 

注意1:假设这种情况gc_maxlifetime=120,如果某个session文件最后修改时间是120秒之前,那么在下一次回收(1/100的概率)发生前,这个session仍然是有效的。

注意2:如果你的session使用session.save_path中使用别的地方保存session,session回收机制有可能不会自动处理过期session文件。这时需要定时手动(或者crontab)的删除过期的session:cd /path/to/sessions; find -cmin +24 | xargs rm

分享到:
Mysql存储PHP Session - php会话
Mysql存储PHP Session 首先要进行的配置如下: 1.php.ini中将session.save_handler = files 中的files改为User,其他默认即可,重启Apache 2.本实例创建的数据库名叫php, username: root password:root 本实例设计的数据库的表结构如下所示,代码如下: create table mysession(  se...
php session工作原理分析 - php会话
php session工作原理分析 session是一个服务器全局变量,为何他可以在不同页面之间切换而不丢失数据并且也不把数据保存在客户端呢,下面我们来看看session工作原理与用法。 众所周知,http协议是一个无状态协议,简单来说就是,web服务器是不知道现在连接上来的人到底是哪个人,为了满足选...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……