标题可能有点奇怪,但我无法用其他任何方式来描述它.我有以下代码:
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,但找不到任何相关结果.
只要一个脚本"使用"会话,会话文件就会被锁定 - 而其他想要使用相同会话的脚本必须等到锁定被释放.
通过session_write_close()在长时间运行的脚本中尽早调用来避免这种情况.