当PHP会话不可写时抛出一个错误?
问题描述:
如果PHP会话不可写,是否有办法检测并抛出错误?当PHP会话不可写时抛出一个错误?
在大的代码库中,可能很难知道在会话更改代码之前是否调用了session_write_close()
。而当你认为你正在更新会话时,它可能实际上是不可写的,这可能会被忽视。
答
您可以检查会话的状态。
if (session_status() !== PHP_SESSION_ACTIVE) {
//PHP 7
throw new Error();
}
session_write_close()
被称为后,状态会PHP_SESSION_NONE
+0
这是个很好的答案,谢谢。我在代码中补充了这一点。 我用session_write_close()函数编写了一个包装函数,以便在写入关闭之前保留session数组的内容。 比我的脚本底部我使用你的代码,并比较当前会话与会话保存的内容。如果有差异,我会抛出错误,说“会话写入尝试写入非可写会话”。 – Haluk
'session_status()!== PHP_SESSION_ACTIVE'? – frz3993
@ frz3993这看起来有效。谢谢。你为什么不把它作为答案提交。 – Haluk