Я бы не пошел по пути onunload
(по крайней мере, не исключительно), так как он ненадежен в случае сбоя, потери питания и т. Д. Скорее всего, в этом случае записи могут быть заблокированы «навсегда».
Я бы встраивал в страницу метод Ajax, который периодически запрашивает PHP-скрипт для «подтверждения» того, что страница еще жива.
Вы можете использовать такие «подтверждающие» запросы для сборки / обновлениятаблица для отслеживания текущих блокировок, работающая с s / t как lock_id
, который однозначно идентифицирует блокируемую «запись», session_id
, чтобы однозначно идентифицировать сеанс браузера, удерживающий эту блокировку, и expire_timestamp
, чтобы установить время, в которое »запись "должна быть снова разблокирована, если больше не поступают запросы" подтверждения "session_id
и поднимают ее expire_timestamp
.
В сочетании с заданием cron, периодически удаляя записи, превышающие их expire_timestamp
,это должно быть более надежным способом сделать то, что вы пытаетесь достичь.