PHP kolayca düzenlenebilir yapılandırma verilerini saklamak için hızlı yolu?

7 Cevap php

(PHP ile) kolayca değiştirilebilir, böylece PHP yapılandırma veri depolamak için en hızlı yolu nedir? Önce config.php dosyasını sahip hakkında düşündüm, ama ben en azından çok basit, PHP ile anında düzenleyemezsiniz? Sonra XML dosyaları olan, ancak her HTTP isteği ezici onları ayrıştırma düşündüm. Yani, INI dosyaları düşündüm, ama sonra INI dosyaları / dize değerlerini int sınırlı olduğunu düşündüm. Sonunda, ben json kodlanmış dosya iyi olduğunu sonuca gelmiş:

$config['database']['host'] = ...;
$config['another']['something'] = ...;
...
json_encode($config);

JSON diziler saklayabilirsiniz beri, onunla oldukça karmaşık konfigürasyonları oluşturabilir, ve INI dosyaları daha hızlı ayrıştırır.

Benim soru: Ben bir şey kaçırmak veya bunu yapmak için daha iyi bir yolu var mı?

7 Cevap

Serialize PHP değişkenleri saklamak için JSON daha iyi bir seçenektir.

Ben config dosyasını kaydetme, ve include yükleme yapılandırma bilgi için kullanmak için var_export kullanmak ister. Bu kolay progmatically yapılandırma verileri kaydetmek için yapar ve de bir kişi için okuma / yazma için veri kolaylaştırır:

config.php:

return array(
 'var1'=> 'value1',
 'var2'=> 'value2',
);

dnm.php:

$config = include 'config.php';
$config['var2']= 'value3';
file_put_contents('config.php', '<?php return ' . var_export($config, true) . ';');

Güncel config.php şimdi aşağıdakileri içerir:

return array(
 'var1'=> 'value1',
 'var2'=> 'value3',
);

Json_encode karşıt olarak serialize kullanmanız gerekir:

http://docs.php.net/serialize

. Ben yapılandırma depolamak yolu harici php dosyasında bazı değişkenleri koymak ve ben bu dosyaları kullanmak istediğinizde, sonra diyorum:

<?php include("fileName"); ?>

Ve bu çok sayfada yapılandırma bilgileri paylaşmak için izin verecek. Ben, ancak, bu en verimli yöntem olduğunu emin değilim, ama bana kolay gibi görünüyordu.

Eğer peşinde olduğunuz için ne büyük olasılıkla overkill, ama ne yapmak eğilimindedir içinde isim / değer çiftleri için değişiklikleri denetlemek için bir PHP sınıfını kullanarak bir veritabanı yapılandırma verileri depolamak iken. (Örn: bu sınıfın dışında hiçbir doğrudan DB erişim var.)

Bir çağrı değerini değiştirmek için PHP yapılandırma sınıfa yapıldığında, bu daha sonra standart bir PHP üzerinde tanımlı çeşitli değerler ile tüm dosya içerir yazar.

Gibi, yapılandırma veri okuma yüksüz zaman performans isabet var ve tüm yapılandırma veri CMS modülü üzerinden veritabanı içinde değiştirilebilir.

Ben int / string değerleri hakkında doğru eminim ve evet JSON bir yoldur ama seri ve bir dize unserializing daha hızlı optimizasyonu için olacak:

Bu bağlantı size yardımcı olacaktır:

http://docs.php.net/serialize

Ben yapılandırma ya da ayarlar adında bir tablo ile bir veritabanını kullanır. Tablo iki sütun vardır:

name [varchar(255)]
value [varchar(255)]

Bu int yıllardan, şamandıra ait, ve kısa dizeleri saklama kolaylığı sağlar.

Sonra iki işlev, GetSetting ve SetSetting oluşturun. Bunlar sırasıyla, bir satır depolamak ve bir satır almak. Ben bu muazzam değerleri depolama kolaylaştırır bulabilirsiniz.

İstediğiniz yerine yapılandırma dosyası dahil kullanırsanız, performansı biraz kazanacaktır. Eğer yapılandırma dosyası her zaman yerinde olacağını bilmek eğer bunu yapabilirsiniz, ya da eğer varsa kontrol etmek için kendi mekanizması varken.