RE: Table locking to prevent duplicate inserts?

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

 



John,

Thanks much for the excellent tips, I guess I was trying to make it too
difficult. We're working on the SQL and indexes to alleviate the slowdowns
and I don't expect this to really be an issue in the future, it just
concerned me that it was even possible... I thought I'd coded it better than
that. 

The duplicates are an issue because this is a stats-gathering application
for area high school sports, and duplicate stat entries resulted in doubled
stat values. I guess we should also be looking at tightening up our
reporting code using SELECT DISTINCT, perhaps, but really hadn't considered
that we'd have any dupes to begin with. Adding a unique constraint isn't a
bad idea either, but since it'd have to be unique across several fields I'd
have to read up and figure out how to do that.

> Sorry about that; I hate to keep my employers waiting. BTW, I haven't 
> received my paycheck this month. ;)

I certainly didn't mean to imply that anyone on the list had an obligation
to answer my post and hope no one took it that way. I was just apologizing
for the duplicate post and trying to explain why I was trying again.

Anyway, thanks again for the help. I'll be able to fix this app and will
incorporate your suggestions into my work in the future.

Chuck



> -----Original Message-----
> From: John W. Holmes [mailto:holmes072000@charter.net]
> Sent: Monday, October 20, 2003 11:32 AM
> To: Mayo, Chuck
> Cc: php-db@lists.php.net
> Subject: Re:  Table locking to prevent duplicate inserts?
> 
> 
> Mayo, Chuck wrote:
> > Hi all, 
> > 
> > Hope you'll forgive the duplicate post but the list seems 
> to be hopping
> > today (unlike the friday afternoon I sent the original 
> query)... since
> > everyone seems to be awake today I thought I'd try it again:
> 
> Sorry about that; I hate to keep my employers waiting. BTW, I haven't 
> received my paycheck this month. ;)
> 
> > 1) A user submits a form containing about a hundred form 
> fields which PHP
> > needs to insert into a MySQL table.
> > 
> > 2) MySQL is busy doing a lengthy SELECT for someone else, 
> so the user's
> > browser hangs until the SELECT is done. 
> 
> Okay, first of all, fix this "lengthy" select or whatever other 
> slowdowns there are in your scripts.
> 
> > 3) The user gets tired of waiting and hits submit again 
> while his browser is
> > still hung. 
> > 
> > 4) When the long SELECT finishes, two PHP threads kick off 
> (I'm assuming),
> > the user's original submit and his second, resulting in 
> duplicate INSERT's 
> 
> Easy way is to set a session variable when they submit a form 
> flagging 
> the form as submitted at time X. If it's been less than X 
> seconds since 
> the last time the form was submitted, then deny the re-submission.
> 
> Other method would be to supply a unique id to the form in a hidden 
> element. When the form is submitted, put that variable in the 
> session. 
> If the form is submitted, the value is already in the session, so you 
> know this is a duplicate entry.
> 
> What problems do the duplicate entries cause? You may be able 
> to handle 
> this at the database level with a UNIQUE restraint on your column.
> 
> -- 
> ---John Holmes...
> 
> Amazon Wishlist: www.amazon.com/o/registry/3BEXC84AB3A5E/
> 
> php|architect: The Magazine for PHP Professionals ? www.phparch.com
> 
> 
> 
> 

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



[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux