最近写项目的时候会发现一个很奇怪的问题, 明明启动了Session,并且PHP设置的 Cookie_sessionid
也没有到期, 但是过了一定的时间, 之前设置的Session数据却不翼而飞, 造成错误。于是我搜索了一番发现, 只需要修改 php.ini
中的一个关键设置即可。下面是我在项目中实施的热修复:
<?php
// Your codes;
if(session_status() !== PHP_SESSION_ACTIVE) { // 如果session没有启动;
ini_set('session.gc_maxlifetime', '10800'); // 10800秒, 也就是 60 * 3 * 60 (3小时);
session_start();
}
?>
上面的 session.gc_maxlifetime
就是修改Session的 最大生命时间
, 到期后将会被PHP的GC机制自动回收。
PHP的配置文件默认设置的过期时间为 1440
秒, 也就是 24分钟
。
注意: 修改Session配置文件的时候必须要 在Session启动前
修改, 否则会造成错误异常抛出!