php教程 php手册 php中设置session过期时间方法

php中设置session过期时间方法

May 25, 2016 pm 04:55 PM

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

我们最常用的是在php程序中设置

 代码如下 复制代码

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

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

 代码如下 复制代码

unset($_SESSION['last_access']) 或 $_SESSION['last_access']='';
?>

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请求就有一次回收发生”。这个概率是通过以下参数控制的

 代码如下 复制代码

#概率是gc_probability/gc_divisor
session.gc_probability = 1
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



教程链接:

随意转载~但请保留教程地址★

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)