PHP: Optimum yapılandırma depolama?

3 Cevap php

Benim uygulama tuşu / değerler bir sürü üzerinden konfigüre alır (örneğine için 30,000 diyelim)

Ben zamanında yeniden yapılandırması için izin DEFINEs önlemek istiyorsanız bilerek, bu yapılandırmalar için en iyi dağıtım yöntemi bulmak istiyorum.

Ben düşündüm

  • bir php dosyası ile bir diziye ön-derleme
  • Bir tmpfs sqlite veritabanına bunları ön-derleme
  • Bir memcached db içine ön-derleme

benim seçeneklerim nelerdir

  • (bellek bir sorun değildir), bu yapılandırma en iyi rastgele erişim süresi?
  • iyi yapılandırılmış erişim süresi i gibi ailelere içine bu yapılandırmayı break up eğer (ağ, i18n, ..)

Thanks Jerome

3 Cevap

Bellek bir sorun değildir eğer Eh, sadece bir dosyaya bir dizi seri. Bu daha hiçbir hızlı çözüm yoktur. Sen SQLite I / O ve kütüphane yükü yoktur ve memcached ağ yükü yoktur.

Ama unutmayın, bellek really bir sorun olmamalıdır. Bir olarak, gerektiğinde onlara yük olabilecek bir veritabanı kullanarak karşıt olarak, bir kerede belleğe tüm 30.000 eleman dizi yükleniyor olurdum.

Ayarlarını yapılandırmak için, kendi dosyasında her koyabilirsiniz.

Ama gerçekten, bir veritabanını kullanıyor olmalıdır. Yani, onlar için oradalar. Hakkında 30k ayarlarını endişelenmenize gerek neden ben gerçekten soru .. Eğer uygulama tasarımını yeniden isteyebilirsiniz.

Nasıl bir veritabanında hakkında?

Böyle bir şema ile:

| key | value |

Bu gibi verileri olabilir:

| currency | pound |
| timezone | GMT   |

Ayrıca bu gibi bunu sorgulamak anlamına gelir:

SELECT * FROM options WHERE key = 'timezone'

Hatta birçok seçenek dönmek:

SELECT * FROM options WHERE key IN ('timezone','currency')

Bu durum en azından bir SQLite veritabanı, veritabanı her türlü olabilir. Eğer PHP gibi bir dil kullanarak iseniz bunu uygulama tek bir veritabanında aşağı bağlı endişe olsaydı, sadece bir düşünce, farklı veritabanı türleri arasında taşınabilir ADOdb veritabanı soyutlama için kullanabilirsiniz.

Eğer yapılandırılmış isterseniz, ben parse_ini_file fonksiyonunu kullanarak ini dosyaları söyleyebilirim.