导入到mysql时,php会话冻结整个服务器

Dav*_*sen 4 php session

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

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();
Run Code Online (Sandbox Code Playgroud)

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

但是,当我添加session_start(); 正下方error_reporting其他页面将不会加载,直到for循环/导入完成.

有任何想法吗?我试过Google,但找不到任何相关结果.

CBr*_*roe 9

只要一个脚本"使用"会话,会话文件就会被锁定 - 而其他想要使用相同会话的脚本必须等到锁定被释放.

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