我有这个小测试脚本:
session_start();
session_write_close();
error_reporting(-1);
register_shutdown_function(function() {
//echo 'shutdown';
});
$MAX = 120;
set_time_limit($MAX);
echo date('Y-m-d H:i:s').'<br>';
$m = microtime(true);
$file_db = new PDO('sqlite:'.dirname(__FILE__).'/test.sqlite3');
$file_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$file_db->exec("CREATE TABLE IF NOT EXISTS messages (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, message TEXT, time INTEGER)");
$d = date('U');
do
{
$file_db->exec ('INSERT INTO messages VALUES (null, "titleee'.rand(1,9).'", "MESSAGEEEE'.rand(1,99).'", "'.rand(1,999).'")');
if (date('U') - $d > $MAX/2)
{
break;
}
} while (true);
$file_db = null;
echo 'ok: '.(microtime(true)-$m);
如果这是在浏览器中的多个实例中运行,迟早它会丢弃“SQLSTATE[HY000]:一般错误:5 数据库已锁定”异常。如何躲避呢?
我遇到这个错误是因为我在 SQLiteBrowser 上有一条未保存的记录,然后 SQLite 不会在上面写入。保存记录后,我的脚本就恢复正常工作。因此,每次发生此错误时,请检查 SQLiteBrowser(或任何其他编辑器)是否已打开并且是否有任何未保存的更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)