2012-02-05 106 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