> I've been trying to brush up on my CF skills and I'm a bit confused with > Request Variables.
The request scope lasts for the duration of each request. If you define request.var, every file (includes, custom tags, whatever) that's processed from then on in the course of that HTTP request has access to request.var. Session variables persist for as long as the session timeout (set in CF Admin or <cfapplication> tag), and are specific to each client. Application variables' persistence are again controlled by CF Admin or <cfapplication> settings, and are specific to each application (as defined with the <cfapplication> tag). Both session and application variables (and server variables) need to be locked when read or written to. Check out ColdFusion Locking Best Practices http://www.allaire.com/Handlers/index.cfm?ID=17318 Locking in ColdFusion http://www.allaire.com/handlers/index.cfm?ID=17196 To Lock or Not To Lock http://www.defusion.com/articles/index.cfm?ArticleID=105 for different views of locking. I found these articles kind of confusing when taken together, each has a different angle. But you should gain something between them. I don't understand the technicalities of locking, but as I understand it the risk of clashes in CF accessing application/session/server variables is due to how they are stored in memory. There's the risk of memory leaks if there's a clash here. The request scope is treated differently and doesn't carry that risk (wow, listen to the tech jargon! ;) and hence you don't need to put a lock around each time a request variable is written to or read from. Request variables are often talked of just in the context of custom tags, cos the fact that they can be accessed from anywhere during one request means they're useful for custom tags to talk to each other. But I use them quite a bit. I set all stuff like DSN names and passwords in application.cfm using the request scope. Also, any session variables that are needed frequently, I transfer them to the request scope in application.cfm. That way, I put one lock around this chunk of 'transfer' code, and don't need to lock every time a session variable is needed. A couple of notes here: if you do this, use something like <cfset request.var=Duplicate(session.var)> to transfer the variable. If you don't use Duplicate() - correct me if I'm wrong someone! - then request.var just becomes a 'pointer' to session.var, and session.var is still actually read when you refer later to request.var (rendering the whole business kind of redundant!). Duplicate() - which is only available in CF4.5+ - makes request.var a 'deep' copy of session.var, and then request.var technically has nothing to do with session.var except having the same value. Also, I think the 'scope' attribute of <cflock> is new in 4.5 (one of those articles above explains how to use it). Use it! I think there was a recent thread about how this kind of practice affects processing speed. I haven't yet done any really high-traffic sites where this might be a concern, so the convenience of the request scope is great, for now. hth, - Gyrus ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Get the mailserver that powers this list at http://www.coolfusion.com FAQ: http://www.thenetprofits.co.uk/coldfusion/faq Archives: http://www.mail-archive.com/[email protected]/ Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists

