<? ini_set("session.gc_maxlifetime",1); session_start(); $_SESSION["name"] = "darkblue"; ?>
我设置了ini_set("session.gc_maxlifetime",1); session 有效期是1分钟.
我一分钟后再访问同文件夹下的test.php 怎么还能获取到$_SESSION["name"] 的 值啊?应该是空值吧?
过了2小时还是可以获取到.
还需要设置什么吗?
<? session_start(); echo $_SESSION["name"]; ?>
这是我test.php的代码
官方手册http://www.php.net/manual/en/session.configuration.php#ini.session.gc-divisor
你需要检查一下 session.gc_probability 和 session.gc_divisor 的值
<?php ini_set("session.gc_maxlifetime", 10); //单位是秒,我测试时用的是10s //ini_set("session.gc_probability", 1); session_start(); $_SESSION["name"] = "darkbulue"; //输出相关信息 echo 'session.gc_maxlifetime<br />'; echo ini_get('session.gc_maxlifetime').PHP_EOL; echo '<br />'; echo 'session.gc_probability<br />'; echo ini_get('session.gc_probability').PHP_EOL; echo '<br />'; echo 'session.gc_divisor<br />'; echo ini_get('session.gc_divisor').PHP_EOL; echo '<br />';
因为 php 的 GC 还需要依靠 session.gc_probability / session.gc_divisor 来决定是否启动,你把 session.gc_probability / session.gc_divisor 的值设为 1 的话,就可以了,不过性能会很差的。