Domanda

devo usare una variabile (query di risultati) in ColdFusion , che otterrà il risultati di altre applicazioni DB, e negozi in ColdFusion Application.

L'idea principale è che ho bisogno di chiamare l'altra applicazione DB solo in fase di avvio del server e cache i risultati in locale. E ho bisogno di leggere la variabile in altre pagine nella mia applicazione. Io non sovrascriverà quella variabile in qualsiasi pagina.

Il googling ho scoperto che 'onApplicationStart' è utile per assegnare le variabili in fase di avvio dell'applicazione.

E 'sicuro utilizzare la multa onApplicationStart o c'è qualche altro modo? Siamo in grado di assegnare una variabile al tempo di avvio (una sola volta).

Se onApplicationStart va bene: come usare? Forse link dove è spiegato chiaramente è utile.

È stato utile?

Soluzione

Beh, dipende. Con quale frequenza si questi dati interrogazione essere aggiornato? Se è davvero immutabile, quindi onApplicationStart () è un bel posto dove metterlo. Tuttavia, se si cambia ogni tanto, si può solo dire Coldfusion a in cache la query per un certo periodo di tempo , allora non c'è bisogno di pasticciare con onApplicationStart (), ma piuttosto quando si chiama la query si tornerà automaticamente il risultato nella cache (entro il periodo di tempo specificato) .

Indipendentemente da ciò, vorrei scrivere una funzione personalizzata per recuperare i dati. Poi sarà banale per chiamare da onApplicationStart () o altrove.

Startup.cfc: (chiamato quello che vuoi)

<!--- 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: (solo le parti più importanti)

<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>

Ora, si dovrebbe essere in grado di accedere a questa variabile da qualsiasi CFM o CFC nella vostra applicazione usando:

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

Se si utilizza il metodo onApplicationStart (), mi raccomando l'attuazione di un metodo per REINIT l'applicazione. Per un esempio, vedere quest'altra discussione .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top