从while循环获取会话值

时间:2017-03-15 05:54:29

标签: php ajax session

我目前正在使用这样的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

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。因为会话被锁定到正在执行的脚本,所以其他脚本无法更改会话的值,并可能导致意外的结果。但是,如果要在其他脚本使用会话时更改会话变量,则可以在更改之前使用函数session_start(),然后在函数session_write_close()之后立即关闭会话。