6_2:session

前置知识 

1、可以直接使用 think\facade\Session来操作session

2、tp6.0 不支持原生$_SESSION数组 和 所有 session_ 开头的函数

3、只能通过 Session 类或助手函数来操作

4、会话数据统一在当前请求解释的时候统一写入,所有不要在session写入操作之后执行 exit 等中断操作,否则会导致session数据写入失败。

5、6.0的session类可以很好的支持 Swoole / Workman 等环境

6、尽量避免把对象保存到 session 会话

7、Request类可以获取session 不支持写入session

8、多应用session默认是跨应用的,也就是会话共享,可以为每个应用配置不同的前缀 prefix。

9、session文件默认保存在 runtime/session/目录下

10、

 

一 常用操作

1)设置判断等

1、设置session   Session::set('变量名','变量值');

2、设置闪存数据 Session::flash('变量名','变量值');

3、判断session Session::has('变量名');

4、删除session Session::delete('变量名');

5、取值并删除 Session::pull('变量名');

6、清空所有session值 Session::clear();

7、清除当前请求有效的session Session::flush(); //这个没有理解

2)获取值

1、获取单个  Session::get('变量名','默认值');//第二个参数省略 返回null

2、获取全部 Session::all();

3、获取单个 Request.session('变量名','默认值');

4、获取全部 Request.session();

 

二 助手函数

session('变量名','变量值');  设置

session('变量名'); 获取 [ 第二个参数不能设置默认值 没有就是NULL ]

session('?变量名'); 判断

session('变量名',null); 删除

session(null); 删除所有

 

 三 设置独立会话

多应用默认情况下session是跨应用的,就是会话共享,希望独立会话可以为每个应用配置前缀 prefix

 

四 session驱动

默认 session 驱动采用文件缓存, 支持如下配置

path 文件保存路径

data_compress 是否压缩

gc_divisor GC回收概率

gc_probability GC回收概率

 

五  Redis 缓存做为 session

用到的时候再查手册

 

六 自定义驱动

一时半会用不到

 

七 配置文件

type             session类型( File 或者 Cache )

store    当type设置为cache类型的时候指定存 储标识

expire    session过期时间(秒)必须大于0

var_session_id   请求session_id变量名

name    session_name

prefix      session前缀

serialize    序列化方法

八 序列换

1、会话数据保存(请求结束)的时候会自动序列化,并在读取的时候自动反序列化。默认使用的是serialize/unserialize ,你可以自定义序列换机制。

2、在配置文件中设置为 JSON 序列换
'serialize' => ['json_encode', 'json_decode'],

3、应尽量避免把对象保存到 Session 会话 

 

 
posted @ 2021-01-10 11:05  棉花糖88  阅读(63)  评论(0)    收藏  举报