説明

セッションの終了時に実行されます。

シンタックス

<cfargument name="SessionScope" required=True/>
<cfargument name="ApplicationScope" required=True/>
...
</cffunction>

関連項目

onRequestStartメソッドの概要、『ColdFusion アプリケーションの開発』の Application.cfc でのアプリケーションおよびイベントハンドラーの定義Application.cfc によるリクエストの管理

パラメーター

ColdFusion は、次のパラメーターをこのメソッドに渡します。

パラメーター

説明

SessionScope

終了するセッションの Session スコープです。

ApplicationScope

終了するセッションの Application スコープです。

戻り値

このメソッドは値を返しません。cfreturn タグを使用しないでください。

使用方法

このメソッドは、セッション終了時に任意のクリーンアップ処理を実行するために使用します。アクティブでない状態のままセッションタイムアウト期間が経過すると、セッションは終了します。例えば、ショッピングカートの内容やユーザーが注文を完了したかどうかなどのセッション関連データをデータベースに保存したり、その他の必要な処理をユーザーのステータスに応じて実行したりすることができます。セッションの終了またはその他のセッション関連情報を、診断目的でファイルに記録することが必要な場合もあります。このメソッドを明示的に呼び出した場合、ColdFusion はセッションを終了しません。メソッドコードを実行しますが、セッションをロックしません。このメソッドはリクエストに関連付けられていないので、ユーザーページにデータを表示することはできません。共有スコープ変数には次のようにアクセスすることができます。ぺーじ

  • Session スコープにアクセスするには、SessionScope パラメーターを使用します。Session スコープを直接参照することはできません。例えば、Session.myVariable ではなく、Arguments.SessionScope.myVariable を使用します。
  • Application スコープにアクセスするには、ApplicationScope パラメーターを使用する必要があります。Application スコープを直接参照することはできません。たとえば、Application.myVariable ではなく、Arguments.ApplicationScope.myVariable を使用します。例に示すように、Application スコープ内の変数を参照する場合、名前付きのロックを使用します。
  • Server スコープには直接アクセスできます。たとえば、Server.myVariable を使用します。
  • Request スコープにはアクセスできません。
    アプリケーションが終了してもセッションは終了しないので、onSessionEnd メソッドは呼び出されません。ただし、アクティブなアプリケーションがない場合、onSessionEnd は実行されません。

次のメソッドでは、Application スコープのセッションカウント変数を減算し、セッションの長さをログに記録します。

<cfargument name = "SessionScope" required=true/>
<cfargument name = "ApplicationScope" required=true/>
<cfset var sessionLength = TimeFormat(Now() - SessionScope.started,
"H:mm:ss")>
<cflock name="AppLock" timeout="5" type="Exclusive">
<cfset Arguments.AppScope.sessions = Arguments.AppScope.sessions - 1>
</cflock>
<cflog file="#This.Name#" type="Information"
text="Session #Arguments.SessionScope.sessionid# ended. Length: #sessionLength# Active sessions: #Arguments.ApplicationScope.sessions#">
</cffunction>

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

リーガルノーティス   |   プライバシーポリシー