|
DescriptionRuns
when a session ends.
Syntax<cffunction name="onSessionEnd" returnType="void">
<cfargument name="SessionScope" required=True/>
<cfargument name="ApplicationScope" required=False/>
...
</cffunction>
ParametersColdFusion
passes the following parameters to the method:
Parameter
|
Description
|
SessionScope
|
The Session scope
|
ApplicationScope
|
The Application scope
|
ReturnsThis
method does not return a value; do not use the cfreturn tag.
UsageUse this
method for any clean-up activities when the session ends. A session
ends when the session is inactive for the session time-out period.
You can, for example, save session-related data, such as shopping
cart contents or whether the user has not completed an order, in
a database, or do any other required processing based on the user’s
status. You might also want to log the end of the session, or other session-related
information, to a file for diagnostic use.
If you call this
method explicitly, ColdFusion does not end the session; it does execute
the method code, but does not lock the Session.
You cannot
use this method to display data on a user page, because it is not associated
with a request.
You can access shared scope variables as follows:
Use the SessionScope parameter to access the Session
scope. You cannot reference the Session scope directly; for example,
use Arguments.SessionScope.myVariable, not Session.myVariable.
You must use the ApplicationScope parameter to access
the Application scope. You cannot reference the Application scope
directly; for example, use Arguments.ApplicationScope.myVariable,
not Application.myVariable. Use a named lock when you reference
variables in the Application scope, as shown in the example.
You can access the Server scope directly; for example, Server.myVariable.
You cannot access the Request scope.
Sessions
do not end, and the onSessionEnd method is not
called when an application ends. The onSessionEnd does
not execute if there is no active application, however.
ExampleThe
following method decrements an Application scope session count variable and
logs the session length.
<cffunction name="onSessionEnd">
<cfargument name = "SessionScope" required=true/>
<cfargument name = "AppScope" 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.AppScope.sessions#">
</cffunction>
|
|
|