User Guide

274 Chapter 2: ColdFusion Tags
<!--- Use an application lock for the application-wide variable that
keeps track of the number of turtlenecks sold.
For a more efficient, but more complex, way of handling Application scope
locking, see "ColdFusion MX Developer’s Guide"--->
<cflock scope = "Application" timeout = "30" type = "Exclusive">
<cfif NOT IsDefined("application.number")>
<cfset application.number = 0>
</cfif>
</cflock>
<!----------------------- End of Application.cfm ----------------------->
<h3>cflock Example</h3>
<cfif IsDefined("form.submit")>
<!--- The form has been submitted; process the request. --->
<cfoutput>
Thanks for shopping E-Turtleneck. You chose size <b>#form.size#</b>,
color <b>#form.color#</b>.<br><br>
</cfoutput>
<!--- Lock the code that assigns values to session variables. ---->
<cflock scope = "Session" timeout = "30" type = "Exclusive">
<cfparam name = session.size Default = #form.size#>
<cfparam name = session.color Default = #form.color#>
</cflock>
<!---- Lock the code that updates the Application scope number of
turtlenecks sold. --->
<cflock scope = "Application" timeout = "30" type = "Exclusive">
<cfset application.number = application.number + 1>
<cfoutput>
E-Turtleneck has now sold #application.number# turtlenecks!
</cfoutput>
</cflock>
<cfelse>
<!--- Show the form only if it has not been submitted. --->
<cflock scope = "Application" timeout = "30" type = "Readonly">
<cfoutput>
E-Turtleneck has sold #application.number# turtlenecks to date.
</cfoutput>
</cflock>
<form method="post" action="cflocktest.cfm">
<p>Congratulations! You selected the most comfortable turtleneck in the
world.
Please select color and size.</p>
<table cellspacing = "2" cellpadding = "2" border = "0">
<tr>
<td>Select a color.</td>
<td><select type = "Text" name = "color">
<option>red
<option>white
<option>blue