誰かが私にこの振る舞いを説明できますか?で多数のアプリケーションスコープ設定を設定しましたonApplicationStart
が、そのうちのいくつかはで参照されていonSessionStart
ます。ただし、ORMを有効にすると、onApplicationStartがまったく実行されていないように見えるため、onSessionStartメソッドが失敗します。
これが問題であると理解するのに少し時間がかかりました。通常、onApplicationStart
開発中にプログラムでヒットしてテストします。そのため、症状が出たのはサービスを再開してからでした。最終的に私はそれをORMにさかのぼり、それは次のように単純です。
THIS.ormenabled = true; // Error
THIS.ormenabled = false; // Everything peachy
Application.cfcを削除し、さまざまなメソッドにいくつかのタイムスタンプを入れて、何が実行されているかを確認できるようにしました。
<cfscript>
THIS.Name = "TestyMcTestable"
THIS.datasource = 'Test';
THIS.ormenabled = true;
</cfscript>
<cfsetting
requesttimeout="20"
showdebugoutput="false"
enablecfoutputonly="false"
/>
<cfset request.pseudo = Now() />
<cfset sleep(1500)>
<cffunction name="OnApplicationStart" access="public" returntype="boolean" output="false">
<cfset request.application = Now() />
<cfset sleep(1500)>
<!--- Return out. --->
<cfreturn true />
</cffunction>
<cffunction name="OnSessionStart" access="public" returntype="void" output="false">
<cfset request.session = Now() />
<cfset sleep(1500)>
<!--- Return out. --->
<cfreturn />
</cffunction>
<cffunction name="OnRequestStart" access="public" returntype="boolean" output="false">
<cfargument name="TargetPage" type="string" required="true" />
<cfset request.requeststart = Now() />
<cfset sleep(1500)>
<!--- Return out. --->
<cfreturn true />
</cffunction>
<cffunction name="OnRequest" access="public" returntype="void" output="true">
<cfargument name="TargetPage" type="string" required="true" />
<cfset request.request = Now() />
<cfset sleep(1500)>
<!--- Include the requested page. --->
<cfinclude template="#ARGUMENTS.TargetPage#" />
<!--- Return out. --->
<cfreturn />
</cffunction>
私のindex.cfmには、リクエストスコープのダンプが含まれています。orm設定を削除すると、すべて期待どおりに戻ります。ただし、そこに設定があると、アプリケーションの開始時に設定された変数が完全に失われ、onApplicationStartがまったく実行されていないように見えます。
リクエストの合間にアプリケーションの名前を変更してテストしていますが、念のため、サービスも再起動しました。
私は何かが足りないのですか?これは文書化された動作ですか?私はこれをRailoで実行しています-私はACFで広範囲にテストしていませんが、最初の問題はそこでも発生したので、同じ原因であると思います。
誰かがこれに光を当てることができますか?