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() 来启动会话,并使用自定义的存储方式。