Re: database abstraction layer

From: Date: Wed, 03 Feb 2010 01:36:38 +0000
Subject: Re: database abstraction layer
References: 1 2 3 4 5 6 7  Groups: php.general 
Request: Send a blank email to php-general+get-301768@lists.php.net to get a copy of this message
Rene Veerman wrote:
On Wed, Feb 3, 2010 at 12:18 AM, Ashley Sheridan <ash@ashleysheridan.co.uk>wrote:
The problem is where 2 people choose the same instant to perform an action on your site that inserts a record into your db. The db engine inserts them one after the other, and then responds about the max(id) to your PHP script. Then, you now have 2 people who have the same max(id) retrieved, but one of the values is wrong.
well, i only use getmaxid()s for inserts. the timelag between getmaxid() and the insert is so small it'd take 300-800 insert-requests/sec (on that particular table) before an error condition would arise. in which case, a tested piece of sql would fail, and can be routed through the retry functions . These would imo provide ample timing re-randomization, aswell as a measure of stress-relief for both php and mysql server. You may correct me if i'm wrong :) BTW: php core developers: can we have a sleep() that accepts a float? :)
This works right up until someone else maintains this system and can't understand why the database is corrupt. Then they find find your database layer and want to stab themselves :) Cheers, Rob. -- http://www.interjinn.com Application and Templating Framework for PHP

« previous php.general (#301768) next »