2012-02-05 43 views
5

我正在学习sqlite功能,并且发现了SQLite Shared-Cache Mode,它在默认情况下处于禁用状态。使用PHP PDO在sqlite中启用共享寻呼机缓存

共享-Cache是​​:

意在用于嵌入式服务器

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

1)是PHP脚本中的每个PDO连接到一个sqlite数据库认为是单个孤立连接? 2)如果是,则使用共享高速缓存模式可以提高高并发性场景中的性能;激活共享高速缓存模式必须调用此C函数:

int sqlite3_enable_shared_cache(int); 

如何通过PDO调用该函数?

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

最好的问候, 法比奥布达 Web开发/设计@netdesign

回答

0

我已经通过PHP源代码搜索为您找到答案。 ext/pdo_sqlite/中的文件永远不会调用sqlite3_enable_shared_cache函数,这意味着这没有实现。

+0

这是我以为... – 2012-02-05 15:45:41

5

你可以做下面的技巧,使PHP代码中的SQLite共享缓存功能:

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

和它的作品,虽然有点丑 - 在10K用户的性能测试数据库显示了一个小(约3%)的性能降解。看起来这不是查询(结果)缓存,而是原始表数据的内存缓存。这就是为什么它只应用于具有高并发级别的真正庞大的数据库。

+1

这个答案是非常棒的,但是推荐的例子并没有显示如何使用PDO定义的常量 – Sasho 2016-02-16 08:27:58