Just as a warning - do not forget the duplicate below. If you leave it
off, structAppend makes pointers like structCopy does (ie, not at the
top level, but in nested structures). Example:

<cfset a = structNew()>
<cfset a.mod = "moo">
<cfset a.lower = structNew()>
<cfset a.lower.mod = "moo2">
<cfdump var="#a#">
<cfset b = structNew()>
<cfset structAppend(b,a)>
<cfset b.mod = "one">
<cfset b.lower.mod = "two">
<cfdump var="#a#">

Notice how a.lower.mod is modified by the change in b.

=======================================================================
Raymond Camden, ColdFusion Jedi Master for Hire

Email    : [EMAIL PROTECTED]
WWW      : www.camdenfamily.com/morpheus
Yahoo IM : morpheus

"My ally is the Force, and a powerful ally it is." - Yoda 

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:Douglas.Knudsen@;alltel.com] 
> Sent: Tuesday, November 12, 2002 10:55 AM
> To: CF-Talk
> Subject: RE: Locked Out
> 
> 
> Sandy,
> 
> Cool tag.  We use structappend() to do basically what your tag does.
> This works out really well.  All you have to do is use the 
> request scope
> anywhere and no locks to worry about.
> 
> 
> <!--- Move Session to Request FOR READS ONLY!!!--->
> <cflock timeout="30" throwontimeout="No" type="READONLY"
> scope="SESSION">
>       <cfset structappend(request,Duplicate(session))>
> </cflock>
> 
> Doug
> 
> >-----Original Message-----
> >From: Sandy Clark [mailto:slLists@;shayna.com]
> >Sent: Monday, November 11, 2002 8:42 PM
> >To: CF-Talk
> >Subject: RE: Locked Out
> >
> >
> >I wrote an article and a tag to help with this type of situation.
> >Request.cfm
> >Article was "how to sidestep locking" in the April 2002 CFDJ.
> >
> >Premise is rather than to replace all application tags with 
> >the <CFWDDX>
> >just rename them all to request.app both where you set them and where
> >you write them. Extended Search and Replace in CFStudio does 
> just fine.
> >
> >The tag <cf_request> will read and write session or client scoped
> >variables into and out of the request scope.  I've used it on some
> >larger sites with no problems.
> >
> >http://www.shayna.com/index.cfm?fuseaction=coldfusion
> >
> >I'm currently having my site moved to an MX server, so if there are
> >problems, email me and I will send you the items.
> >
> >
> >Just FYI, I implemented this solution on a site that had been in the
> >making for over 9 months and incorporated over 1200 templates.  It is
> >fuseboxed, but not the current implementation.
> >-----Original Message-----
> >From: [EMAIL PROTECTED] [mailto:Douglas.Knudsen@;alltel.com] 
> >Sent: Monday, November 11, 2002 12:43 PM
> >To: CF-Talk
> >Subject: RE: Locked Out
> >
> >
> >Tim, et al...
> >
> >I'd strongly suggest you not use Duplicate to move session or
> >application scoped vars to the request scope.  Duplicate() works on
> >structures.  In CF5 and 4.5, I think this changed in CFMX, the
> >application and session scopes are not really true structures so
> >Duplicate doesn't quite do all you need.  IIRC correctly the 
> big issue
> >was moving newly created vars back into the session or application
> >scope.  There was a big discussion on this over on CFDJ-List 
> about six
> >months back.  What we pulled ou of it and use is
> >
> >in application.cfm:
> ><!--- Move Session to Request FOR READS ONLY!!!--->
> ><cflock timeout="30" throwontimeout="No" type="READONLY"
> >scope="SESSION">
> >     <cfset structappend(request,Duplicate(session))>
> ></cflock>
> >
> >in onrequestend.cfm
> ><cflock timeout="30" throwontimeout="No" type="EXCLUSIVE"
> >scope="SESSION">
> >     <cfset structAppend(session,Duplicate(request))>
> ></cflock>
> >
> >This works very well and our boxen are very stable.  Note that any
> >script that mods or creates a request scoped var, thsi var 
> gets dumped
> >int to session at the end of a request.  In otherwords, we 
> >never have to
> >lock anything but the above to statements.
> >
> >In rogers case though, he will have to do a massive find/replace and
> >either add cflocks or do the above.
> >
> >Doug
> >
> >>-----Original Message-----
> >>From: Tim Painter [mailto:cftalk@;cfex.com]
> >>Sent: Monday, November 11, 2002 6:45 AM
> >>To: CF-Talk
> >>Subject: Re: Locked Out.
> >>
> >>Roger,
> >>     Just curious -- what is the purpose of 
> >>serializing/deserializing it
> >>into wddx and back to CF?  Couldn't you just use
> >><cfset request.application = Duplicate(application)> ?  (with 
> >>the proper
> >>locking of course)
> >>
> >>Tim P.
> >>
> >>> <cflock scope="application" type="READONLY" timeout="10">
> >>> <cfwddx action="CFML2WDDX" input="#application#"
> >>> output="temp">
> >>> <cfwddx action="WDDX2CFML" input="#temp#"
> >>> output="request.application">
> >>> <!--- You can replace the above two lines with the faster
> >>> <cfset request.application = Duplicate(application)>
> >>> if the contents of the application scope are simple.
> >>> Unfortunately, under CF5, Duplicate() tends to bomb
> >>> when used with structures-of-arrays-of structures and so
> >>> on. --->
> >>> </cflock>
> >>>
> >>> (4) Add the following to onrequestend.cfm:
> >>>
> >>> <cflock scope="application" type="EXCLUSIVE" timeout="10">
> >>> <cfwddx action="CFML2WDDX" input="#request,application#"
> >>> output="temp">
> >>> <cfwddx action="WDDX2CFML" input="#temp#"
> >>> output="application">
> >>> <!---
> >>> <cfset application = Duplicate(request.application)>
> >>> --->
> >>> </cflock>
> >>
> >>
> >>
> >>
> >
> >
> 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4
Subscription: 
http://www.houseoffusion.com/cf_lists/index.cfm?method=subscribe&forumid=4
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Get the mailserver that powers this list at http://www.coolfusion.com

Reply via email to