session对于大家来说并不陌生,Session在计算机中尤其是在网络应用中,Session对象存储特定用户会话所需的属性及配置信息。我们在开发的时候需要设置session的过期时间,接下来吾爱编程为大家详细的介绍一下php实现精确设置session过期时间的方法,有需要的小伙伴可以参考一下:
1、什么是session:
Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。Session 对象最常见的一个用法就是存储用户的首选项。
2、session参数:
session.gc_maxlifetime = 1440
session.gc_probability = 1
session.gc_divisor = 1000
我们可以在php.ini文件中,找到上述的三个参数,gc_maxlifetime默认的是24分钟,你可以能会觉着这参数在使用的过程中不起作用,是因为第二和三系统默认了一个回收机制的概率问题,garbage collection 有个概率的,1/1000就是session 1000次才有一次被回收。只要访问达到一定数量,就能达到回收的效果了
3、php程序设置:
(1)、每60秒修改一次session
if(!isset($_SESSION['last_access'])||(time()-$_SESSION['last_access'])-->60){
$_SESSION['last_access'] = time();
}
(2)、设置已过期:
$_SESSION['last_access']='';// 或 unset($_SESSION['last_access']);
4、session过期机制:
session过期也是一个小概率的事件,我们可以使用session.gc_probability和session.gc_divisor 来确定运行session中gc的概率 session.gc_probability和session.gc_divisor的默认值分别为 1和1000,沃茨我们我可以得出ession的gc概率为千分之一。修改此参数会降低php的效率,所以我们可以修改gc_maxlifetime参数来增加session的过期时间
5、设置session永不过期
(1)、session.use_cookies
我们可以将这个参数设置为1,这样我们可以通过cookie来传递sessionid
(2)、session.cookie_lifetime
这个参数代表的是sessionID的客户端的生存周期,默认为0,就说明我们一旦关闭了浏览器对应的sessionId就失效了,我们可以根据自己的需求设置一个满足我们需要的一个足够大的数字即可。
(3)、session.gc_maxlifetime
我们可以修改此参数来设置session在服务器上面的保存时间,超过我们设置的时间,session数据就会被删除。
(4)、设置cookie
如果我们没有对服务器的配置更改的权限,我们可以通过客户端将sessionID存储在cookie中,然后通过程序将这个值传递给session_id()这个函数。
6、session失效不传递
(1)、session.use_trans_sid
我们可以通过修改session.use_trans_sid参数来设置session随着url进行传递,因为默认值为0,所以我们无法在得到前一个页面的session,所以我们可以将此参数对应的值修改为1。
session.use_trans_sid = 1
(2)、程序设置
我们可以在程序中加上以下两段代码:
session_id(SID);
session_start();
这样我们可以将用户的session保存在服务器上面的session文件夹里面了,服务器使用的也是对应的。
PS:要保证服务器上面的对应的session文件夹权限有可写权限,如果没有对应的权限我们可以更改对应的session存储文件夹
//设置当前目录下session子文件夹为session保存路径。
$sessSavePath = dirname(__FILE__).'/session/';
//如果新路径可读可写(可通过FTP上变更文件夹属性为777实现),则让该路径生效。
if(is_writeable($sessSavePath) && is_readable($sessSavePath))
{
session_save_path($sessSavePath);
}
以上就是吾爱编程为大家介绍的关于session的设置过期时间的全部内容了,希望对大家有所帮助,了解更多相关文章请关注吾爱编程网!