session原理

1.设置session值的同时,也会设置cookie,cookie随服务器端的响应返回给客户端存起来,session存储在服务器。

2.session的存取依靠于cookie。

3.cookie相当于超市储物柜的小票,session相当于储物柜。储物柜里面的东西相当于session的值。

5.在php.ini配置文件中设置了文件
session.name = PHPSESSID
session.cookie_lifetime 过期时间
session.cookie_path = / 访问路径
session.cookie_domain = 默认值
session.cookie_httponly = 1 开启httponly
sesion.auto_start = 1 开启session

/*
第一会先给在客户端浏览器上给你分配一个 名称为PHPSESSID,内容为93mer4b58dgjgd84jddf45dh693的文件

第二会在服务器的tmp目录下面创建一个文件,以sess_93mer4b58dgjgd84jddf45dh693为文件名 来存储session的值。


session 设置和获取的时候都要session_start()
*/
session_start();

$_session['username'] = 'lampol'; 
// 服务器存储的文件内容  username|s:6:"lampol";   string类型  长度
$_session['id'] = 888;
// 服务器存储的文件内容  username|s:6:"lampol";id|i:888  int类型  没有长度

var_dump($_session);//读取的是服务器上tmp目录下的值

echo $_session['id'];

session_destroy();//删除服务器端所有的session文件

unset($_session['id']);//单独删除某个健值

setcookie(session_name(),'',time()-3600,'/');//删除cookie

// 设置生成cookie的过期时间
session.cookie_lifetime = 60

// 定期清理session的时间 php.ini进行设置

/*由于PHP的工作机制,它并没有一个daemon线程来定期的扫描Session 信息并判断其是否失效,当一个有效的请求发生时,PHP 会根据全局变量 session.gc_probability 和session.gc_divisor的值,来决定是否启用一个GC, 在默认情况下, session.gc_probability=1, session.gc_divisor =100 也就是说有1%的可能性启动GC(也就是说100个请求中只有一个gc会伴随100个中的某个请求而启动).

GC 的工作就是扫描所有的Session信息,用当前时间减去session最后修改的时间,同session.gc_maxlifetime参数进行比较,如果生存时间超过gc_maxlifetime(默认24分钟) ,就将该session删除。*/


session.gc_probability = 1;
session.gc_divisor = 1000;
session.gc_maxlifetime = 10;

 

posted @ 2018-04-08 22:02  ningxiner1108  阅读(111)  评论(0编辑  收藏  举报