I was about to suggest the method that Ayudh recommended and the only other comments I would have are: 1. Do you mean to lock the Session scope instead of the Application? 2. And you should only nead a ReadOnly lock. 3. As far as I know you should minimise the length of time that you need to lock variables for, i.e. Don't do any loops inside a lock or queries as they can lock the variables for too long. We used to do it like this but because of the pain of locking issues we have changed to using the Request scope for holding dsn variables. This also removes the code from your application.cfm where you check if the DSN exists and if it doesn't then you assign it.
Hope that makes sense. Mark > Not sure if this solves your problem, but looking at your code, why not let > SQL do the incrementing and the database will take care of concurrency for > you. Then you don't need to worry about any locking or CFTRANSACTION. > Something like this: > > <cfquery name="uAd" datasource="#session.DSN#"> > UPDATE theTable > SET clicks = clicks + 1 > WHERE ID=1 > </cfquery> > > Regards: Ayudh > > +--------------------------------------------------------------+ > | Turn on your Revenue Stream... | > | Bolt on a Virtual Cash Register to your e-commerce site now. | > | VeriPay from Xilo Online: http://www.xilo.com | > +--------------------------------------------------------------+ > ----- Original Message ----- > From: "Tim Rox" <[EMAIL PROTECTED]> > To: "CFAussie Mailing List" <[EMAIL PROTECTED]> > Sent: Wednesday, February 05, 2003 17:18 > Subject: [cfaussie] cf locking > > > > Hello all, > > > > Am currently trying to track the number of times a page is accessed by > > incrementing a field in my database. > > > > I thought i would check that it was counting correctly for many concurrent > > users by using a loop with 50 http requests for my page. I ran this page > > through two browsers simultaneously. > > > > Even though i have a lock with the scope "application" around my code for > > incrementing, i still get values of around 90-100 at the end of requesting > > the page 100 times (50 requests x 2 browsers). > > > > I shouldn't really be getting concurrency problems if i have an > > application-level lock should I? > > > > the code looks something like: > > > > <cflock timeout="1000" throwontimeout="No" scope="APPLICATION" > > type="EXCLUSIVE"> > > <cftransaction> > > <cfquery name="qAd" datasource="#session.DSN#"> > > SELECT clicks > > FROM theTable > > WHERE ID=1 > > </cfquery> > > <cfset incrementclicks=qAd.clicks+1> > > <cfquery name="uAd" datasource="#session.DSN#"> > > UPDATE theTable > > SET clicks=#incrementclicks# > > WHERE ID=1 > > </cfquery> > > </cftransaction> > > </cflock> > > > > > > > > ----------------------- > > > > Tim Roxburgh > > Newgency Pty Ltd > > 2a Broughton St > > Paddington 2021 > > Sydney, Australia > > Ph (02) 9331 2133 > > Fax (02) 9331 5199 > > http://www.newgency.com/index.cfm?referer=rysig > > > > > > --- > > You are currently subscribed to cfaussie as: [EMAIL PROTECTED] > > To unsubscribe send a blank email to > [EMAIL PROTECTED] > > > > MX Downunder AsiaPac DevCon - http://mxdu.com/ --- You are currently subscribed to cfaussie as: [email protected] To unsubscribe send a blank email to [EMAIL PROTECTED] MX Downunder AsiaPac DevCon - http://mxdu.com/
