我目前正在使用这样的php脚本:
function a()
{
while(true)
{
if($_SESSION["check"] == 0)
{
page_close()//function runs when page closed
break;
}
$_SESSION["check"] = 0;
sleep(2);
}
}
和另一个名为b的函数,每隔半秒后由ajax调用,以检查浏览器中的页面是否已关闭:
function b()
{
$_SESSION["check"]=1;
}
问题是函数中的$ _SESSION [" check"]总是返回值0,即使在多次调用函数b之后也是如此。想知道变量是否在执行时被锁定在函数中。如果确实如此,那么检测$ _SESSION [" check"]的最佳方式是由while循环中的其他函数改变的。 谢谢:D
答案 0 :(得分:0)
我找到了解决方案。因为会话被锁定到正在执行的脚本,所以其他脚本无法更改会话的值,并可能导致意外的结果。但是,如果要在其他脚本使用会话时更改会话变量,则可以在更改之前使用函数session_start(),然后在函数session_write_close()之后立即关闭会话。