运行运行5分钟的php脚本时,我无法在另一个浏览器选项卡中访问此文件。它显示此选项卡正在加载,但它仅在第一次结束时加载。
会话中是否存在问题,或者您是否可以提出解决此问题的建议?
我该如何解决这个问题?我需要会议。
答案 0 :(得分:2)
尽快致电session_write_close()
。
答案 1 :(得分:0)
在PHP中,对会话状态的访问是同步的。您必须关闭会话以允许其他请求访问它。您可以使用session-write-close()关闭会话。
大多数情况下,初始化后无需更改会话状态。所以只需将会话复制到本地变量:
// Copy session data to local variable
session_start();
$session = $_SESSION;
session_write_close();
// now use $session instead of $_SESSION
if (isset($session['foo'])) {
echo $session['foo'];
}
// Optionally open the session again to write something
// may lead to synchronization issues with parallel requests
session_start();
if ($reckless) {
$session['foo'] = 'bar';
$_SESSION = $session;
} else {
$_SESSION['foo'] = 'bar';
}
在大多数情况下,再次打开会话以改变它是一个糟糕的举动。问问自己为什么要使用会话状态。尝试重新构建您的请求,以便他们不依赖它。