Re: Back from the dead with a racing question!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On Jul 18, 2009, at 9:45 AM, Ashley Sheridan <ash@xxxxxxxxxxxxxxxxxxxx> wrote:

On Fri, 2009-07-17 at 14:01 -0400, Bastien Koert wrote:
On Fri, Jul 17, 2009 at 1:54 PM, Jason Pruim<jason@xxxxxxxxxxxxxx> wrote:

On Jul 17, 2009, at 11:56 AM, Bastien Koert wrote:

On Fri, Jul 17, 2009 at 11:51 AM, tedd<tedd.sperling@xxxxxxxxx> wrote:

At 11:12 AM -0400 7/17/09, Jason Pruim wrote:

Hi everyone!

So some of you may have noticed that I have been away for quite
awhile...
Been trying to get settled (Moved across the country) and getting a job.

And now that that is done I have a question about a project that I might
be doing for my current employer and want to do it properly.

If all goes through, I'll be writing an online database that upwards of
10
people will be using at various times through out the day. Basically, in
a
form they fill out a model number, customer name, phone number etc.
etc..
And then submit the form. After submitting they need to write the log
number
on some paperwork. If I have 2 people submit the form at the same time,
I'm
thinking I could end up with a race condition and they might get the
wrong
log number (The log number is simply a consecutive record number)

Do I need to be reading up on locking tables/rows? Or in my situation as I've briefly described it do I not have to worry about it? Or is there a third door with the magic bullet that will solve all my problems? :)

Any advice is greatly appreciated as always, RTFMing is good as well, as
long as M is defined :)

I'm not afraid of google either, just need the right terms to hit it
with
so I don't go into "search overload" as the commercials for a rival
search
engine claim :)

Thanks Everyone!

Jason:

Welcome back.

Clearly if you have two or more people checkout the same record at the
same
time and each edits the record then you ARE going to have problems when
each
updates the record.

You can solve this problem by using transactions -- here's a link:

http://dev.mysql.com/doc/refman/5.0/en/lock-tables-and-transactions.html

When someone is editing a record, you also need to be able to show the
next
person(s) that the record they want is currently busy and not available. However, I'm not sure as to how to notify the next user that the table is locked via php. Perhaps a table status might provide that information. If
so, then use that to notify the next user.

As for your log of activity, just create a another record (with an
auto_increment index) in your activity log table and update that record
with
the data you need to record, such as user id, timestamp, what record they accessed and whatever else you want after the transaction is completed.

Cheers,

tedd

--
-------
http://sperling.com  http://ancientstones.com  http://earthstones.com

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



As a further note to tedd's reply on transactions, you will need to
use the INNODB engine in mysql should you want to use transactions.
Transactions here are done a row locking level not table so you should
have fewer issues.

I also just found out that unless I can convince them to host it off site, it'll be on a windows machine.... So php & mssql... Does that change alot?

To answer some of the other questions the Log number is currently just an
auto incrementing consuctive number. So an auto+increment would work
perfectly. What I'm trying to avoid is:

User1
User2

User1 submits to log number 12345
User2 submits to log number 12346

User1 is told their log number is 12346
User2 is told their log number is 12346

But User1 & User2 are on different computers... And if it's as easy as using the equivelant for: SELECT * FROM table WHERE UserID="User1" ORDER BY lognumber desc LIMIT 1; Then I'm good... I know how to proceed with writing
it... Just need to figure out how to bill/sell it! ;)




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



MSSQL doesn't allow limit, but you can do a

select top 1 * from table [where] [order by lognumber desc]

--

Bastien

Cat, the other other white meat

I believe more recent versions of MSSQL allow the LIMIT clause, but
what's wrong with MySQL on Windows?

Thanks
Ash
www.ashleysheridan.co.uk


Nothing, but Jason indicated that mssql was predetermined.

Bastien

Sent from my iPod


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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux