4

标题可能有点奇怪,但我真的无法以任何其他方式描述它。我有以下代码:

error_reporting (E_ALL ^ E_NOTICE);

require_once("required/config.php");

$mysqli = new mysqli($db_server, $db_username, $db_password, $db_database);
for ($i = 1; $i < 1001; $i++) {
    if ($insertItem = $mysqli->prepare("INSERT INTO testtable (dummyfield) VALUES (?)")) {
        $insertItem->bind_param('s', $value);

        $value      = "Just some data #$i";

        $insertItem->execute();
        $gebruikersId = $mysqli->insert_id;
        $insertItem->close();

        echo $value . "<br />";
    }
}
$mysqli->close();

当我运行此代码时,大约需要 20 - 30 秒。没关系。我打开第二个窗口,我可以浏览网站上的所有其他页面。这里没问题。

但是,当我添加session_start(); 在for循环/导入完成之前,error_reporting其他页面不会加载。

有任何想法吗?我试过谷歌,但找不到任何相关结果。

4

1 回答 1

9

只要一个脚本“使用”会话,会话文件就会被锁定——其他想要使用同一会话的脚本必须等到锁定被释放。

session_write_close()通过在长时间运行的脚本中尽早调用来避免这种情况。

于 2013-04-11T15:12:05.400 回答