session_set_save_handler
设置用户级会话存储功能
PHP 4.0.0 及以上版本
session_set_save_handler() 函数用于自定义 PHP 会话的存储处理程序。通过这个函数,您可以将会话数据存储到自定义位置(例如数据库、文件系统、Redis 等),而不是使用 PHP 默认的文件存储方式。
session_set_save_handler(
open_callback,
close_callback,
read_callback,
write_callback,
destroy_callback,
gc_callback
);
返回布尔值 TRUE 表示成功,返回 FALSE 表示失败。
以下是一个使用 session_set_save_handler 函数自定义会话存储的示例,其中会话数据存储在 MySQL 数据库中:
function open($save_path, $session_name) {
// 数据库连接代码
return true;
}
function close() {
// 关闭数据库连接
return true;
}
function read($id) {
// 从数据库读取会话数据
return 'session_data';
}
function write($id, $data) {
// 将会话数据写入数据库
return true;
}
function destroy($id) {
// 删除数据库中的会话数据
return true;
}
function gc($maxlifetime) {
// 清理过期的会话数据
return true;
}
// 注册自定义会话处理器
session_set_save_handler("open", "close", "read", "write", "destroy", "gc");
// 启动会话
session_start();
在此示例中,我们定义了 6 个回调函数:open(), close(), read(), write(), destroy(), 和 gc(),分别负责打开、关闭、读取、写入、销毁和垃圾回收会话数据。然后,使用 session_set_save_handler 将这些函数注册为自定义会话存储处理器。接下来,我们调用 session_start() 来启动会话,并使用自定义的存储方式。