在重定向到另一个页面之前,是否必须显式关闭会话?
session_start();
if (isset($_SESSION['login']))
$login = $_SESSION['login'];
else {
// is session_write_close() necessary here?
header('Location: /login');
exit();
}
有没有办法告诉PHP关闭会话,还要不打扰保存会话数据? (类似于session_discard_close()
)
答案 0 :(得分:2)
很难完全回答这个问题而不是“不”。
但是,如果您阅读session_write_close的PHP手册页,您会看到它指出:
会话数据通常存储在之后 你的脚本终止没有 需要调用session_write_close(), 但是会话数据被锁定 防止并发写入只有一个 脚本可以在任何会话上运行 时间。一起使用框架集时 通过会议,您将体验到 由于这个原因逐帧加载 锁定。你可以减少时间 需要加载所有帧 所有人都尽快结束会议 会话变量的更改已完成。
因此,在某些边缘情况下,答案是“不,但如果你这样做可能会更快”。
答案 1 :(得分:1)
不,没有必要。会话将在请求结束时自动关闭。来自documentation:
会话数据通常存储在之后 你的脚本终止没有 需要调用session_write_close(), 但是会话数据被锁定 防止并发写入只有一个 脚本可以在任何会话上运行 时间。