2012-02-05 8 views
5

sqlite özelliklerini okuyorum ve varsayılan olarak devre dışı bırakılan SQLite Shared-Cache Mode'u keşfettim.Paylaşımlı Çağrı Önbelleği'ni, PHP PDO kullanarak sqlite'de etkinleştirin

Paylaşılan-Cache geçerli:

gömülü sunucuların

o parçacıkları veya işlemler arasında tek veri ve şema önbelleği paylaşır çünkü

kullanılması amaçlanmıştır. Ben PHP (ve Python) içinde (paylaşılan-cache ile) sqlite kullanarak ilgileniyorum bu yüzden sorularım şunlardır:

1) DB tek izole bir bağlantı olarak kabul bir sqlite için bir PHP komut dosyası her PDO bağlantısıdır? 2) eğer evet ise, Paylaşılan Önbellek Modunu kullanmak yüksek bir eşzamanlılık senaryosundaki performansı artırabilir;

int sqlite3_enable_shared_cache(int); 

nasıl PDO aracılığıyla bu işlevi çağırmak için: Paylaşılan-Cache Mod birini etkinleştirmek için bu C işlevi çağırmak zorunda?

Neredeyse imkansız gibi görünüyor ama belki bir çözüm var.

Saygılarımızla, ben sizin için bir cevap bulmak için PHP kaynak kodu ile arama yapmış netdesign

cevap

0

@ Fabio Buda Web Developer/Tasarımcı. ext/pdo_sqlite/ numaralı dosyada hiç dosya sqlite3_enable_shared_cache işlevini çağırıyor, bunun anlamı bu uygulanmadı.

+0

Düşündüğüm şey bu ... –

5

PHP kodunda SQLite paylaşılan önbellek özelliği etkinleştirmek için aşağıdaki hile yapabilirsiniz:

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

Ve biraz çirkin olsa işleri - 10k kullanıcılar performans testleri veritabanı biraz (~% 3) performansını gösterir degradasyon. Bu, sorgu (sonuç) önbelleği değil, ham tablo verilerinin bir bellek önbelleği gibi görünüyor. Bu yüzden sadece yüksek eşzamanlılık düzeyine sahip gerçekten büyük veritabanlarında faydalanmalıdır.

+1

Bu yanıt oldukça harika, ancak önerilen örnek PDO ile tanımlanan sabitin nasıl kullanılacağını göstermiyor – Sasho