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

Fab*_*uda 5 php sqlite caching

我正在研究sqlite功能,我发现了默认禁用的SQLite共享缓存模式.

Shared-Cache是​​:

旨在用于嵌入式服务器

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

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

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

int sqlite3_enable_shared_cache(int);
Run Code Online (Sandbox Code Playgroud)

如何通过PDO调用该功能?

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

诚挚的问候,Fabio Buda网站开发人员/ Designer @ netdesign

小智 6

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

define( 'SQLITE3_OPEN_SHAREDCACHE' , 0x00020000 );
$sqlite = new SQLite3( 'sqlite.db3' , SQLITE3_OPEN_READWRITE  | SQLITE3_OPEN_CREATE |     SQLITE3_OPEN_SHAREDCACHE );
Run Code Online (Sandbox Code Playgroud)

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