Под записью вы имеете в виду записи SQL? Если это так, вы можете добавить еще один столбец isOpen
. Установите его на 1
до тех пор, пока кто-то еще его откроет, и в этом случае не передавайте его другим лицам.
В подобных ситуациях лучше всего реализовать механизм тайм-аута, при котором запись может быть открыта только в течение «х» минут перед принудительным закрытием.
(Редактировать: в этом ответе предполагается, что вы хотите сохранить запись заблокированной на протяжении всего времени, в течение которого пользователь просматривает информацию, извлеченную из таблицы. Если вы хотите заблокировать запись только на тот момент, когда происходит операция чтения / записи на этой записи, механизмы MySQL имеют встроенные механизмы для этого)
В ответ на ваш комментарий
Чтобы сделать запись доступной для других, когда активный пользователь уходит прочь, мне нужно подумать о двух способах ее достижения:
- Позвольте механизму тайм-аута позаботиться об этом. В зависимости от вашего сценария достаточно короткое временное окно может работать нормально.
- В дополнение к тайм-ауту также реализуйте механизм пульса - Ajax-скрипт на странице опрашивает сервер, сообщая ему, что страница все еще открыта. Если пользователь уходит, сервер распознает пропущенное сердцебиение и сбрасывает запись. В этом случае тайм-аут все равно будет иметь приоритет. Таким образом, если пользователь оставляет окно открытым и уходит, сервер все равно получит пульс, но когда окно времени закроется, сервер сбрасывает запись (несмотря на то, что пульс по-прежнему получает).