PHP相关session的知识

       由于http协议是一种无状态协议,所以没有办法在多个页面间保持一些信息。例如,用户的登录状态,不可能让用户每浏览一个页面登录一次。session就是为了解决一些需要在多页面间持久保持一种状态的机制。PHP从4.1版本开始支持session机制。

一、session运行机制

       session_start():在页面中调用此函数,PHP会在服务器端生成一个session文件,并将一个空字符串写入到文件中;在页面结束生命周期前,session会把在此生命周期内产生的数据写入到session的文件中。

        

二、session在php.ini中的配置

与sessionId传递相关的设置:

1、session.use_cookie = 1 //是否采用cookie传递sessionId,默认是1,表示启用

2、 session_name = PHPSESSID //通过cookie或者get传递sessionId的键名

3、session.use_only_cookie = 0 //表示只用cookie传递sessionId

4、session.cookie_lifetime = 0  //关闭浏览器清除cookie值

5、session.cookie_path = / //浏览器cookie文件存储路径

6、session.cookie_domain =  //cookie对应的域名地址

与session文件存储相关的设置:

1、session.save_handler = file //用户读取和存储session数据的方式,默认是file

2、session.save_path = "/var/lib/php/session" //指的保存session文件的目录,可以指定到其他目录,但是目录必须要有httpd的守护进程属主权限。

3、session.auto_start = 0 //如果启用,每次请求都会初始化session。建议不启用通过session_start()来启用

与session回收有关的php.ini的设置:

1、session.gc_probability 和 session.gc_divisor //确定了GC启用的概率,默认是1/1000

2、session.gc_maxlifttime = 1440 //设置session文件存活时长

三、几个常用的操作session的函数

1、session_start() //初始化session,一个session的生命周期开始。session的初始化意味着声明一个$_SESSION全局数组变量,并读取session文件中的值到$_SESSION变量中

2、$_SESSION //数组类型,在生命周期内读取session到数组中,同时也可以赋值给他,并在页面关闭时把值写入的session文件中。

3、session_unset() //清空session数据,或者是说清空$_SESSION中的值

4、session_destroy() //注销一个session会话,意味着session的生命周期结束了。同时,会删除服务器上的session文件,但不会删除全局变量$_SESSION,如果删除全局变量可以用unset()函数。

四、session的回收

session文件失效分为两部分,一部分为浏览器存储的cookie可以通过expire设置过期,服务器端的session文件,PHP通过启动GC进程来清除相关session文件。

 

 

 

        

 

posted @ 2017-03-24 18:21  赵宏伟  阅读(259)  评论(0编辑  收藏  举报