0

运行运行 5 分钟的 php 脚本时,我无法在另一个浏览器选项卡中访问此文件。它显示此选项卡正在加载,但仅在第一次结束时加载。

会话中是否存在问题,或者您可以提出解决此问题的建议吗?

我怎么解决这个问题?我需要会话。

4

2 回答 2

2

session_write_close()尽快打电话。

于 2013-08-05T09:38:52.817 回答
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';
}

在大多数情况下,再次打开会话以更改它是一个糟糕的举动。问问自己为什么要使用会话状态。尝试重组您的请求,使他们不依赖它。

于 2013-08-05T10:05:28.393 回答