我是自定义会话处理程序的新手,所以我真的想了解它是如何工作的。
1)我刚刚从php.net复制了example code,并且稍微调了一下:
public function write($id, $data) {
die('xxx');
return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true;
}
如你所见,我写了一个骰子。我运行这段代码:
$S = new MySession\SessionHandler();
session_set_save_handler($S, true);
session_start();
$_SESSION['foo'] = 'bar';
var_dump($_SESSION);
die('End');
输出是:
array (size=1)
'foo' => string 'bar' (length=3)
Endxxx
怎么可能?更有意思的是,如果我在session_destroy();
之前加die('End')
,那么xxx
就不会出现。它是输出缓冲的东西吗?
2)此问题已删除。在评论中回答。