Web uygulaması için yapılandırma ayarlarını depolamak nasıl?

4 Cevap php

Ben sysadmin sitenin "Envanter" bölümünü kullanmak istemiyordu ben değişken olmak isterdim bazı site meta ... Örneğin, benim uygulamada, o / o kapatmak olabilir var ve bu ana siteden kaybolur.

Bu yüzden belki de ben "meta" olarak adlandırılan benim veritabanında bir tablo yapabilir ve orada değerleri (ya da dizilerini) eklemek, düşünüyordum! Bir modül kapalı var ise, daha sonra, komut satırı güncelleştirmek ve 0 "modül x" ayarlamak, ve ben onunla yapılabilir olurdu, doğru olur?

Sadece bir değerler kümesi için yük (tüm bir tablo oluştururken, vb, bunu sürdürmenin) korkunç bir sürü gibi görünüyor dışında ... Temelde, benim çözüm dairesel bir yuvaya bir kare peg itme gibi geliyor.

Drupal veritabanı üzerinde üstünkörü bir bakış şey verdi, ve ben onlar sunucusunun kendisinde bir yapılandırma dosyası kullanmak tahmin ediyorum? Bu durum buysa, ben bir. Cfg dosyası (örneğin) kayıtlı değerleri web uygulaması tarafından okunabilir olabilir tam olarak nasıl bilmiyorum, ne de ben böyle bir uygulama dosyasında bilgi kurtarabilecek ne biliyor musunuz. Eğer daha önce bu sorunu ele ettik eğer ben, senin fikir takdir ediyorum.

Ben arada, öncelikle PHP kullanabilirsiniz.

Şimdiden teşekkürler!

4 Cevap

Ben genellikle bu config dizi kullanarak başarılı gördüm:

$config["admin_email"] = "admin@mydomain.com";
$config["site_name"] = "Bob's Trinket Store";
$config["excluded_modules"] = array("inventory", "user_chat");

Sonra sonra kontrol edebilirsiniz:

if (!in_array("inventory", $config["excluded_modules"])) {
  // include inventory logic
}

Verilen bu biraz ters. Gerçekte, açıkça yerine negatif daha, included modülleri bildirmek için akıllı olurdu. Daha sonra farklı konfigürasyonlarda tepki ve hareket-up yüklemek için projenizde bu config.php başvurur.

En az iki alan yapım, çok veritabanı tablo olarak bunu uygulamak:

  1. Seçenek
  2. Değer

Nerede option "excluded_modules" ve value "envanter, user_cat" olacağını karşılık olabilir. Tüm dürüstlük rağmen, bu yöntem biraz özensiz ve size gelecekte bazı hayal kırıklığı neden olabilir.

Ben bir soru olduğunu biliyorum "nasıl bir web uygulaması gelen sunucu üzerinde ayrı bir dosya okuma / yazma yok", ama ben seni yapılan varsayımların birini ele düşündüm. DB içinde yapılandırma depolama ile (çok) yanlış bir şey yok.

Ben projelerini gördüm (trafik çok, ve iyi bir uptime - ve IT bir ton bu şekilde = P) tutarak veritabanında bu depolanan yapılandırma, daha fazla veya daha az size anlatıldığı gibi. Tek bir tablo var, ve bunu bütün bir çılgın fail-over/partitioning düzeni yoksa, o zaman gerçekten bu kadar yükü değil.

DB birçok özellik, veri depolama yanında ve çevresinde altyapı bir yeri vardır. Eğer yapılandırma için DB kullanıyorsanız, küçük bir ekstra maliyet ile DB dağıtım / yedekleme için var ne mekanizma kullanmak olsun. Ayrıca izinler mekanizması inşa yararlanabilirsiniz ve herhangi bir mevcut olan özellikleri geri.

Edit: However, if you access that config on every page display, though, you might bottleneck :) All about your design. One solution is that if you have a persistent web service, you can have it re-scan the config every X seconds.

Temelde iki seçeneğiniz var - DB masaya koymak, ya da düz bir yapılandırma dosyası (muhtemelen PHP, belki XML) ya. Ikincisi ile, bir sayfadan düzenlenebilir yapmak için, siz (1) dağınık OS özgü dosya erişim sorunları, (1) uygun dosya izinlerini bir site kurmak her zaman uygulamak, ve (3) ayrıştırmak ile anlaşma ve var olacaktır PHP / XML kodu oluşturmak. Bir veritabanı ile, ihtiyacınız olan tüm basit bir sorgu, bu yüzden kesinlikle bu ile gitmek istiyorum.

Bu yaklaşımı kullanarak büyük projeler için, ben phpBB (parolalar hariç son kontrol zamanı) bir veritabanında onun config en depolamak biliyorum.

Ben public_html folder.I bu bana esneklik ve VAR gruplandırma bir çok verir düşünüyorum önce oturup yapılandırma olarak ini dosyaları ile çalışmak ve modüller vb için gerekli ayrı ini ise oluşturmayı tercih