使用PHP PDO在sqlite中启用共享寻呼机缓存
我正在研究sqlite特性,发现了默认情况下禁用的 共享缓存是: 用于嵌入式服务器 因为它在线程或进程之间共享单个数据和模式缓存。 我对在PHP(和Python)中使用sqlite(带有共享缓存)感兴趣,因此我的问题是: 1) PHP脚本中到sqlite DB的每个PDO连接都被视为一个独立的连接吗 2) 如果是,使用共享缓存模式可以提高高并发场景中的性能;要激活共享缓存模式,必须调用此C函数:使用PHP PDO在sqlite中启用共享寻呼机缓存,php,caching,sqlite,Php,Caching,Sqlite,我正在研究sqlite特性,发现了默认情况下禁用的 共享缓存是: 用于嵌入式服务器 因为它在线程或进程之间共享单个数据和模式缓存。 我对在PHP(和Python)中使用sqlite(带有共享缓存)感兴趣,因此我的问题是: 1) PHP脚本中到sqlite DB的每个PDO连接都被视为一个独立的连接吗 2) 如果是,使用共享缓存模式可以提高高并发场景中的性能;要激活共享缓存模式,必须调用此C函数: int sqlite3_enable_shared_cache(int); 如何通过PDO调用该函
int sqlite3_enable_shared_cache(int);
如何通过PDO调用该函数
这似乎几乎是不可能的,但也许有一个解决办法
致以最良好的祝愿,
法比奥布达
Web Developer/Designer@我已经搜索了PHP源代码,为您找到了答案。
ext/pdo\u sqlite/
中没有任何文件调用sqlite3\u enable\u shared\u cache
函数,这意味着没有实现此功能。您可以使用以下技巧在PHP代码中启用sqlite共享缓存功能:
define( 'SQLITE3_OPEN_SHAREDCACHE' , 0x00020000 );
$sqlite = new SQLite3( 'sqlite.db3' , SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE | SQLITE3_OPEN_SHAREDCACHE );
虽然有点难看,但它还是可以工作的——对10k用户数据库的性能测试显示性能有点下降(~3%)。看起来这不是查询(结果)缓存,而是原始表数据的内存缓存。这就是为什么它应该只在具有高并发级别的大型数据库上使用。这个答案非常棒,但是推荐的示例没有显示如何将定义的常量与PDO一起使用