私の CMS には、サイト名、スローガンなど、ページが生成されるたびに読み込まれる多数の構成値があります。もちろん、これらの値は 1 ~ 2 時間などに設定された期間でキャッシュされます (設定変更時にリセットされます)。
XML または MySQL を使用してこれらの値を保存する必要がありますか? これを行う最良の方法は何ですか、パフォーマンス万力ですか?
私の CMS には、サイト名、スローガンなど、ページが生成されるたびに読み込まれる多数の構成値があります。もちろん、これらの値は 1 ~ 2 時間などに設定された期間でキャッシュされます (設定変更時にリセットされます)。
XML または MySQL を使用してこれらの値を保存する必要がありますか? これを行う最良の方法は何ですか、パフォーマンス万力ですか?
それを伝統的なものと呼んでいますが、.INI
ファイルは PHP アプリで特に役立つことがわかりました。
PHP には、これを簡単にするparse_ini_file()関数が組み込まれています。
$config
便利なことに、複数のファイルを単一の配列またはAppConfig
シングルトン クラスにマージするために使用できる配列を返します。
実際、PHP は .INI ファイルを使用して自身を構成します。参照してください/etc/php.ini
:)
次のような便利なことができます
[development]
host = localhost
user = foo
pass = password123
name = dev_db
[production]
host = localhost
user = sqluser
pass = AJ539jf
name = live_db
true
の 2 番目の引数に渡すときparse_ini_file()
、PHP はセクション タイトルを配列キーとして使用します。出力は次のようになります
Array
(
[db] => Array
(
[development] => Array
(
[host] => localhost
[user] => foo
[pass] => password123
[name] => dev_db
)
[production] => Array
(
[host] => localhost
[user] => sqluser
[pass] => AJ539jf
[name] => live_db
)
)
)
すべての構成ファイルをバージョン管理にチェックインし、アプリが実行されている環境を決定する 1 行のアプリ構成ファイルまたは環境変数を使用するだけで済むため、これは素晴らしいことです。
別の回答では、選択した CMS の構成ガイドラインを順守することを提案していますが、ほとんどの PHP フレームワークはこの領域のマークを見逃していることがわかりました。特に、さまざまな環境で複数の構成をサポートする場合。アプリの構成を適切に処理する独自の「拡張機能」を作成することは、通常、特定の CMS の厳格なソリューションを回避するために最初に行うことの 1 つです。
大きな構成配列を使用することの追加の利点は、他のアプリやサービスとアプリをやり取りさせたい場合に、JSON に簡単にエンコードできることです。
私にとって、XMLは構成を保存するためのより良い方法です。(すべての言語で)読み取りと書き込みが簡単で、オタク以外の人が簡単に制御でき、バージョン管理(SVN、Git)で簡単に制御できます。
私は一般的に CMS を見て、そこで慣例として使用されているものは何でも固執します。すべてがどこかに表示される構成/設定を探すことほど悪いことはありません。あなたが探しているものを見つけることは、他の場所に隠されている異常です。この場合のパフォーマンスは、どの選択をしても最小限です。