Ssylka

Как правильно реализовать блокировку документа при совместной работе?

Сложность реализации блокировки документов для совместной работы заключается в нетривиальном выборе подхода, особенно когда веб-сокеты не подходят. Первоначальная идея с блокировкой формы для всех, кроме текущего редактора, на первый взгляд простая, наталкивается на ряд ограничений при реализации.
Как правильно реализовать блокировку документа при совместной работе?
Изображение носит иллюстративный характер

Использование поллинга, хоть и самое очевидное решение, но с множеством недостатков. Проблемы так же возникают с долгоживущими соединениями, поскольку PHP сервер обрывает их через 30 секунд, что делает невозможным применение long polling и Server-Sent Events.

Альтернативным решением стали события на блокировку и разблокировку формы, отправляемые на сервер при входе и выходе пользователя. Однако эта стратегия также столкнулась с трудностями при обработке закрытия окна браузера, поскольку событие onbeforeunload не срабатывало при запросе о сохранении изменений. После замены onbeforeunload на unload, возникла проблема с браузером Edge, где событие перестало срабатывать.

Финальным решением стал поллинг с отправкой событий о блокировке формы через заданный интервал. Блокировка снимается при выходе пользователя или по истечении таймаута, если запросы перестают поступать. Важно отметить, что при переходе на другую страницу внутри приложения интервал так же сбрасывается.


Новое на сайте

19136Древнейшие в мире ручные деревянные орудия возрастом 430 000 лет обнаружены в Греции 19135Как древнейший генетический диагноз раскрыл тайну жизни подростка-инвалида в каменном... 19134Способны ли новые рои искусственного интеллекта незаметно захватить человеческое сознание? 19133Могут ли сложные дипептиды зарождаться в ледяном вакууме космоса, становясь основой жизни... 19132Математическая модель метапознания наделяет искусственный интеллект способностью... 19131Безопасен ли ваш редактор кода после обнаружения вредоносного ИИ-расширения в... 19130Может ли гигантское облако испаренного металла скрывать второе солнце или секретную... 19129Как критическая уязвимость CVE-2026-22709 разрушает изоляцию в популярной библиотеке vm2? 19128Станет ли платформа n8n «отмычкой» для взлома всей корпорации из-за новых критических... 19127Как агентный ИИ решает математическую проблему защиты и обеспечивает расследование 100%... 19126Действительно ли британский шпион Ричард Бертон обманул весь исламский мир ради хаджа? 19125Какая тайна лекарственного дерева и оптических иллюзий оставалась неразгаданной пять... 19124Почему незначительное изменение старого пароля делает корпоративную сеть легкой добычей... 19123Астрономический путеводитель по снежной луне и редким небесным явлениям февраля 2026 года 19122Критическая уязвимость CVE-2026-24858 открывает хакерам доступ к системам Fortinet через...