On 24 Mar 2005 Joshua Beall wrote:

> I realized that this sort of problem would always exist unless I had some 
> sort of semaphore mechanism.  Once a user has *started* a transaction, they 
> need to be prevented from initiating a second transaction until the first 
> transaction has been completed.

Why not simply store some kind of user ID and a timestamp for the 
transaction start time in a database.  Every time a new transaction is 
started check the database, if there is another one in process, give an 
appropriate error.  When the transaction completes delete the record.

The hole in this of course is transactions that start and never finish. 
That's why I suggest a timestamp -- you can use it to check how long 
it's been since the previous transaction started, and ignore it if 
that's over some threshold (for example, if the previous transaction 
was stated a minute ago and a normal transaction takes 5 seconds, you 
can be pretty sure).  And you can run a cron job to periodically sweep 
the database and remove old transactions that never completed.

--
Tom

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to