我需要从不同的PHP线程更新单个sqlite数据库,所有这些都在同一时间运行。 以下是数据库连接的代码
$db = new SQLite3(__DIR__.'/proxy.db');
$db->busyTimeout(5000000);
$db->exec('PRAGMA journal_mode=WAL;');
$db->exec('PRAGMA temp_store=2;');
$db->exec('PRAGMA synchronous=0;');
这是更新的不同方法......
$db->query('BEGIN TRANSACTION;UPDATE proxy SET lastused='.time().' WHERE id='.$row['id'].';COMMIT;');
$db->query('BEGIN DEFERRED;UPDATE proxy SET lastused='.time().' WHERE id='.$row['id'].';COMMIT;');
$db->query('BEGIN IMMEDIATE;UPDATE proxy SET lastused='.time().' WHERE id='.$row['id'].';COMMIT;')
所有这些有时返回错误:"无法执行语句:SQL逻辑错误或缺少数据库"。如果删除begin-commit代码,那么我得到SQLite3 :: query():数据库被锁定。
我可以以某种方式更改代码以消除这些错误(但仍使用分离的多线程进程)吗?