Session
最后更新于:2022-04-02 02:32:11
[TOC]
## 语法
```
session_abort Discard session array changes and finish session
session_cache_expire 返回当前缓存的到期时间
session_create_id 生成一个session_id 格式:3cs6in3dpv4pmnf7ghs1pk0ul5
session_decode 解码会话数据
session_destroy 销毁一个会话中的全部数据
session_encode 将当前会话数据编码为一个字符串
session_id 获取/设置当前会话 ID
session_module_name 获取/设置会话模块名称
session_name 读取/设置会话名称
session_regenerate_id 使用新生成的会话 ID 更新现有会话 ID
session_register_shutdown 关闭会话
session_reset 回复为覆盖前的值
session_save_path 读取/设置当前会话的保存路径
session_set_cookie_params 设置会话 cookie 参数
session_set_save_handler 设置用户自定义会话存储函数
session_start 启动新会话或者重用现有会话
session_status 返回当前会话状态
session_unset 释放所有的会话变量
session_write_close Write session data and end session
```
## 实例
### session_cache_expire 自定义过期时间
- 请求开始的时候,缓存到期时间会被重置为 180,默认值设置在`session.cache_expire`
- 需要在 `session_start`前调用`session_cache_expire`
```
var_dump(ini_get("session.cache_expire"));//180
session_start();
var_dump(session_cache_expire(110)); //180
var_dump(session_cache_expire());//110
```
### session_create_id 自定义设置session_id
```
session_start();
// php>7.1
$sessionId =session_create_id("prefix-");
session_id($sessionId);
```
### session_decode / session_encode 序列化 session
```
session_start();
$data = session_encode();
var_dump($data); // __hash__|a:1:{s:32:"742a41cdb68ca3b802fefef2ae5b04d6";....
// 并且使用解码后的数据填充 $_SESSION 超级全局变量
session_decode($data);
```
### 设置session存储方式
-默认存储为 files ,可以设置为 pgsql ,redis 等
```
session_module_name('redis'); // or pgsql or redis etc
session_save_path('127.0.0.1:6379');
// 可以设置多个
//session_save_path('127.0.0.1:6379,otherhost:11211:60')
echo session_module_name(); // redis
if(session_module_name() !== 'redis'){
// throw an exception maybe
}
session_start();
```
以redis 的方式存入
### session_name 设置session_id 的名称
```
session_name("ANT_SESSION");
session_start();
```
### session_save_path
设置 session 保存位置
```
session_save_path("session");
session_start();
```
### session_set_save_handler 自定义函数
实现一个集成 sessionhandler 的函数
```
```
';