ColdFusion 9のページで実行されたすべてのクエリのリストを取得するにはどうすればよいですか

StackOverflow https://stackoverflow.com/questions/4474255

質問

Application.cfc onrequestend関数にコードを追加したいと思います。これは、特定のアプリケーション変数フラグがオンになっている場合、SQLと実行時間をデータベーステーブルにログに記録します。 ColdFusionはクエリ構造体の一部としてSQLと実行時間を返すため、その部分は比較的簡単です。

ただし、このサイトにはおそらく1000ページ近くがあり、それらすべてを変更することは現実的ではありません。だから、これをonrequestend関数で完全にプログラム的に行いたいと思います。そのためには、ページ上で実行されたすべてのクエリのリストを何らかの形で取得する必要があり、それが私が困惑している場所です。

現在のページで実行されたすべてのクエリの名前のリストを取得するにはどうすればよいですか?これらのクエリはテンプレートの変数範囲に表示されますが、そこには他の変数も無数にあり、それを簡単にループしてクエリを決定する方法がわかりません。

どんな助けも感謝します。

役に立ちましたか?

解決

その情報はデバッグテンプレートを介して入手可能であるため、いくつかのポインターについては、それらのファイルを見てみましょう。

考慮すべきもう1つのことは、CFCまたはカスタムタグでクエリをカプセル化し、ロギングとの取引をすることです(ただし、あなたのクエリはサイト全体に広がっているので、変更するために多くのページがあるかもしれませんが、それが理由を語るのはなぜかデータアクセスをカプセル化することは良い考えです。まさにこの種の状況で維持し、強化する方が簡単です)。

デバッグテンプレートからの関連コード(少し近代化)は次のとおりです。

<cfset tempFactory = createObject("java", "coldfusion.server.ServiceFactory") />
<cfset tempCfdebugger = tempFactory.getDebuggingService() />
<cfset qEvents = tempCfdebugger.getDebugger().getData() />

<cfquery dbType="query" name="qdeb">
    SELECT *, (endTime - startTime) AS executionTime
    FROM qEvents WHERE type = 'SqlQuery'
</cfquery>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top