使用PHP PDO在sqlite中启用共享寻呼机缓存

时间:2012-02-05 15:12:20

标签: php caching sqlite

我正在研究sqlite功能,我发现了默认禁用的SQLite Shared-Cache Mode

共享缓存是:

  

打算在嵌入式服务器中使用

因为它在线程或进程之间共享单个数据和模式缓存。 我有兴趣在PHP(和Python)中使用sqlite(带共享缓存),所以我的问题是:

1)PHP脚本中的每个PDO连接都是sqlite DB被认为是单个隔离连接吗?

2)如果是,使用共享缓存模式可以提高高并发场景的性能;要激活共享缓存模式,必须调用此C函数:

int sqlite3_enable_shared_cache(int);

如何通过PDO调用该功能?

似乎几乎不可能,但也许有一个解决方案。

最诚挚的问候, 法比奥布达 Web开发人员/设计师@ netdesign

2 个答案:

答案 0 :(得分:6)

您可以执行以下技巧以在PHP代码中启用SQLite共享缓存功能:

define( 'SQLITE3_OPEN_SHAREDCACHE' , 0x00020000 );
$sqlite = new SQLite3( 'sqlite.db3' , SQLITE3_OPEN_READWRITE  | SQLITE3_OPEN_CREATE |     SQLITE3_OPEN_SHAREDCACHE );

它的工作原理虽然有点难看,但对10k用户数据库的性能测试显示出一点(~3%)的性能下降。看起来这不是查询(结果)缓存,而是原始表数据的内存缓存。这就是为什么它应该只对具有高并发级别的真正庞大的数据库有益。

答案 1 :(得分:0)

我搜索了PHP源代码,为您找到答案。 ext/pdo_sqlite/中的任何文件都没有调用sqlite3_enable_shared_cache函数,这意味着没有实现。