SessionHandlerInterface::write
Write session data
PHP 5.4.0及以上版本。
该函数是SessionHandlerInterface接口中的一个方法,负责将会话数据写入存储介质中。当会话数据需要被保存时,会调用此函数。
public function write(string $session_id, string $session_data): bool;
返回一个布尔值,表示会话数据是否成功写入存储。返回true表示成功,false表示失败。
以下是一个自定义SessionHandler的实现,使用write方法将会话数据写入自定义存储介质中(比如数据库或文件)。
public function close() {
// 关闭存储连接
return true;
}
public function read($session_id) {
// 从存储中读取会话数据
return '';
}
public function write($session_id, $session_data) {
// 将会话数据写入存储
// 假设这里是将数据保存到数据库
$query = "INSERT INTO sessions (session_id, session_data) VALUES ('$session_id', '$session_data') ON DUPLICATE KEY UPDATE session_data='$session_data'";
// 执行数据库查询
return true; // 如果成功写入,返回true
}
public function destroy($session_id) {
// 删除指定会话数据
return true;
}
public function gc($maxlifetime) {
// 清理过期的会话数据
return true;
}
}
$handler = new MySessionHandler();
session_set_save_handler($handler, true);
session_start();
在这个示例中,首先创建了一个名为MySessionHandler的类,实现了SessionHandlerInterface接口。然后,重写了write方法,该方法会将会话数据存储到自定义的存储介质中,这里假设使用了一个数据库。在代码中,我们使用了一个INSERT语句将会话ID和会话数据保存到数据库表中。如果会话ID已经存在,则通过ON DUPLICATE KEY UPDATE语句更新会话数据。最后,调用session_set_save_handler来设置会话的存储处理器并启动会话。