1

私は、iniファイルを使用してすべてのステータスコード(エラー、成功コードなど)を格納するアプリケーションを作成しています。非常に単純なバージョンは次のとおりです。

[success]
000=Status code not found.

[error]
000=Error code not found.
001=Username/Password not found.

そして、それを操作するCFコンポーネントは、次のコードを使用します。

component  hint="Set of tools to interact with status codes."{
    public function init(string codefile) any{
        this.codefile = Arguments.codefile;
    }

    public function getCodeString(string type, string code) string{
        var code = getProfileString(Variables.codefile, Arguments.type, Arguments.code);
        return code;
    }
}

getProfileStringを呼び出すと、Railoがファイルを開き、キーを検索して値を返すと思います。したがって、アプリケーションが大きくなり、コードが増えるにつれて、このプロセスの速度が低下すると予想されます。では、initメソッドでファイルを開き、すべてを変数スコープに読み込んで、そこからgetProfileStringを呼び出す方法はありますか?

4

2 に答える 2

3

.iniアプローチを使い続けたい場合は、onApplicationStartでiniファイルを解析し、@SergiiがXMLファイルに推奨するようにデータをアプリケーションスコープにプッシュすることもできます。

そのようなことをしてください:

var sections = getProfileSections(variables.codeFile);
var sectionEntries = [];
var indx = 0;
for (key in sections){
    sectionEntries = listToArray(sections[key]);
    application[key] = {};
    for (indx=1; indx <= arraylen(sectionEntries); indx++){
            application[key][sectionEntries[indx]] = getProfileString(variables.cfgFile,key,sectionEntries[indx]);
    }
}

Railoでこれをテストしていませんが、少なくともColdFusion9では動作するはずです。

于 2011-04-09T05:37:52.813 に答える
1

Railoを使用しているので、おそらく最も簡単な解決策があります。ファイルをRAMファイルシステムに配置します。

したがって、ファイルへのフルパスはのようになりますram:///some/path/to/config.ini

明らかに、おそらく最初の要求で、最初にファイルをRAMに書き込む必要があります。

したがって、コンポーネントのわずかに変更されたバージョンは次のようになります。

component  hint="Set of tools to interact with status codes."{

    public function init(string codefile, string.ramfile) any{
        variables.codefile = arguments.codefile;
        variables.ramfile = arguments.ramfile;
    }

    public function getCodeString(string type, string code) string{

        if (NOT fileExists(variables.ramfile)) {
            fileCopy(variables.codefile, variables.ramfile);
        }

        return getProfileString(variables.ramfile, arguments.type, arguments.code);

    }
}

this.codefileに変更したことに注意してvariables.codefileくださいinit

とにかく、iniファイルが最も便利で保守しやすいソリューションかどうかもわかりません。とにかく毎回解析する必要がありますよね?ファイル構成が必要な場合は、XMLを使用してください。それを解析してonApplicationStart、データをアプリケーションスコープにプッシュするだけです。

于 2011-04-08T20:44:29.213 に答える