设置SESSION的生命周期

来源:互联网 发布:js修改button文字 编辑:程序博客网 时间:2024/05/29 03:26
这个blog上面的内容,通常都是记录困扰了我很久的问题,就像今天这个问题,反复折腾了一下午。我发现,其实nio真是一个很耐心很有水准的老师,通常,我们会在群里说他是一个web开发的速查字典,几乎无所不通了。[php]设置SESSION的生命周期
今天我所要想解决的问题,简单来说,就是设置SESSION的生命周期问题,其实问题是很简单了,只是不知道为什么,我用session_cache_expire(12*60);关掉浏览器后竟然不管用。
后来发现,其实php session是基于cookie的,所以要设置session的生命周期,首先要设置cookie的失效时间。因为在客户端(如浏览器)登录网站时,SESSION 是否有用,首先找客户端是否有 COOKIE,通过COOKIE 中的 SESSION ID 去找服务器上的文件。
这样的话,做了以下设置:
session_set_cookie_params( 12*60*60 );//设置cookie的有效期 
session_cache_expire(12*60);//设置session的有效期
 
至于后来,nio还给我讲解了关于session的命中率及回收几率的问题,这些问题都记录在他的blog上面了

Session储存于服务器端(默认以文件方式存储session),根据客户端提供的session id来得到用户的文件,取得变量的值,session id可以使用客户端的Cookie或者Http1.1协议的Query_String(就是访问的URL的“?”后面的部分)来传送给服务器,然后服务器读取Session的目录……。也就是说,session id是取得存储在服务上的session变量的身份证。当代码session_start();运行的时候,就在服务器上产生了一个session文件,随之也产生了与之唯一对应的一个session id,定义session变量以一定形式存储在刚才产生的session文件中。通过session id,可以取出定义的变量。跨页后,为了使用session,你必须又执行session_start();将又会产生一个session文件,与之对应产生相应的session id,用这个session id是取不出前面提到的第一个session文件中的变量的,因为这个session id不是打开它的“钥匙”。如果在session_start();之前加代码session_id($session id);将不产生新的session文件,直接读取与这个id对应的session文件。 按照上面的思想,我只要把session_id存在在cookie中就可以正常使用session了以下是session_set_cookie_params的用法void   session_set_cookie_params ( int lifetime [, string path [, string domain [, bool secure [, bool httponly]]]] )设置与这个session相关联的session的细节

0 0
原创粉丝点击