We use a combination of timeout and user who has locked the record in a form e.g.

User A opens the form. A record id is stored in the page and the db record has 3 cols -> is_locked (y/n), locked_by (user_id) & locked_time (datetime)

B then opens the form.
If the record is locked & more then 5 minutes has passed then B's ID will then be updated into the table and a new locked_time set.

If it's locked and within the time an error message pops up saying "Record locked by XYZ for another 3 minutes".

If user A comes back in 10 minutes and submits, the sys checks if his user id is in the "locked_by" col, and then alerts him that his 5 minutes were up and he needs to refresh.

It's never let us down. If you can improve on it let me know :)

Bret Walker wrote:
Hello-

I'm developing a web-based system whereby users can edit documents and
then e-mail the documents to selected recipients.

The "documents" are comprised of the data from several MySQL fields.

I want to make sure that two people don't edit a document at the same time.

My users log in via a script that starts a session.

My initial idea was to have a field to denote file access (1 for "in
use" 0 for available).  The problem with this would be if a user
navigates to a different page or closes the browser window without
clicking a "save" or "close" button (which would execute a query to set
the in_use field to 0).

I'm sure others have dealt with the issue of exclusive access to a MySQL
resource.  I've looked into InnoDB transactional support, but that
doesn't seem to be what I need, since I'm not overly concerned about
simultaneously access, just simultaneous editing.

How can I ensure the "document" isn't accessed by two people at the same
time?

Thanks,
Bret

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

Reply via email to