在重定向到另一个页面之前,是否必须显式关闭会话?

时间:2011-01-27 18:30:46

标签: php session redirect

在重定向到另一个页面之前,是否必须显式关闭会话?

session_start();
if (isset($_SESSION['login']))
    $login = $_SESSION['login'];
else {
    // is session_write_close() necessary here?
    header('Location: /login');
    exit();
}

有没有办法告诉PHP关闭会话,还要不打扰保存会话数据? (类似于session_discard_close()

2 个答案:

答案 0 :(得分:2)

很难完全回答这个问题而不是“不”。

但是,如果您阅读session_write_close的PHP手册页,您会看到它指出:

  

会话数据通常存储在之后   你的脚本终止没有   需要调用session_write_close(),   但是会话数据被锁定   防止并发写入只有一个   脚本可以在任何会话上运行   时间。一起使用框架集时   通过会议,您将体验到   由于这个原因逐帧加载   锁定。你可以减少时间   需要加载所有帧   所有人都尽快结束会议   会话变量的更改已完成。

因此,在某些边缘情况下,答案是“不,但如果你这样做可能会更快”。

答案 1 :(得分:1)

不,没有必要。会话将在请求结束时自动关闭。来自documentation

  

会话数据通常存储在之后   你的脚本终止没有   需要调用session_write_close(),   但是会话数据被锁定   防止并发写入只有一个   脚本可以在任何会话上运行   时间。