多线程PHP脚本中的sqlite错误

时间:2015-07-17 18:53:12

标签: php multithreading sqlite

我需要从不同的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():数据库被锁定。

我可以以某种方式更改代码以消除这些错误(但仍使用分离的多线程进程)吗?

0 个答案:

没有答案