2

ColdFusionでVariable(Query Resultset) を使用する必要があります。これにより、他のアプリケーション DB から結果が取得され、Coldfusion アプリケーションに格納されます。

主なアイデアは、サーバーの起動時にのみ他のアプリケーション DB を呼び出し、結果をローカルにキャッシュする必要があるということです。そして、アプリケーションの他のページで変数を読み取る必要があります。どのページでもその変数を上書きしません。

onApplicationStartグーグルで、「 」がアプリケーションの起動時に変数を割り当てるのに役立つことがわかりました。

罰金を使用していonApplicationStartますか、それとも他の方法はありますか?起動時(1回)に変数を代入できます。

よろしければonApplicationStart :使い方は?明確に説明されているリンクが役立つ場合があります。

4

1 に答える 1

8

まあ、それは依存します。このクエリ データはどのくらいの頻度で更新されますか? それが本当に変更されていない場合、onApplicationStart() はそれを配置するのに適した場所です。ただし、頻繁に変更される場合は、一定期間クエリをキャッシュするように Coldfusion に指示するだけで、onApplicationStart() をいじる必要はありませんが、クエリを呼び出すと、キャッシュされた結果を自動的に(指定した期間内に)。

とにかく、データを取得するためのカスタム関数を作成します。次に、 onApplicationStart() または他の場所から呼び出すのは簡単です。

Startup.cfc: (好きな名前を付けます)

<!--- Replace the datasource name with your db name --->
<cffunction name="getStartupQuery" hint="Returns a query recordset for startup">
    <cfargument name="datasource" required="no" type="string" default="OtherAppDB">
    <!--- Init the query variable --->
    <cfset var result = queryNew("id")>

    <!-- Get the query dataset --->
    <cfquery name="result" datasource="#arguments.datasource#">
         YOUR QUERY HERE
    </cfquery>

    <cfreturn result>
</cffunction>

Application.cfc: (重要な部分のみ)

<cffunction name="onApplicationStart">
    <!--- init the startup.cfc, then retrieve the data
    and save it to the application scope. Remember the component name must match
    your component above --->
    <cfset var startup = createObject("component", "startup")>
    <cfset application.varFromOtherDB = startup.getStartupQuery()>
    <cfreturn true>
</cffunction>

これで、次を使用して、アプリケーション内の任意の CFM または CFC からこの変数にアクセスできるようになります。

<cfset myNewVar = application.varFromOtherDB>
or
#application.varFromOtherDB#

onApplicationStart() メソッドを使用する場合は、アプリケーションを再初期化するメソッドを実装することを強くお勧めします。例については、この他のディスカッションを参照してください

于 2009-12-20T08:22:32.940 に答える