Intereting Posts
Проблема с выбранной подкатегорией при редактировании элементов категории Как определить веб-искателя? Требуется очистить буфер в Node.js? Если да, то как? Если нет, то в чем проблема? ОШИБКА: не удалось найти драйвер – использование PDO с базой данных MS Access Удалять изображения из html так же, как gmail для электронных писем без включенного изображения доступ к http-файлу и сеансы php сложный многомерный процесс ассоциативных массивов с foreach Yii CGrid разбиение на страницы и сортировка с помощью CArrayDataProvider не работает Проверьте, не прошла ли данная дата html2canvas: удалить пустое место над изображением spl_object_hash () ожидает, что параметр 1 будет объектом, null Несколько экземпляров PHP-скрипта не будут загружаться одновременно в одном браузере с одного и того же URL-адреса Сохранить PHP-массив в MySQL? вызов функции php в отдельном файле из ajax не работает Ping-сайт и результат возврата в PHP

PHP / MySQL / jQuery Пессимистичное блокирование записи

Я подумывал о разработке некоторой простой блокировки записей для приложения, в котором я участвую. Есть несколько пользователей, которые буквально будут часов, чтобы закончить редактирование записи. Это вызывает проблемы, когда кто-то хочет внести изменения в запись. В настоящее время нет блокировки.

Я не уверен, что оптимистическая блокировка надежна в моем случае, так как запись сохраняется через запрос AJAX. Я смотрю на применение своего пессимистического блокирования; используя два поля, такие как lock_user_id и locking_timestamp , я могу отслеживать, кто открыт для записи, и в последний раз, когда он был открыт.

Но поскольку пользователь может открывать его в течение нескольких часов, как я могу узнать, отказался ли пользователь от него или просто усердно работает над этим? Я не хочу заставлять их обновлять его каждые 5 минут ~, но это может быть возможностью (AJAX сохраняется каждые 5 минут).

Возможно, процесс jQuery может рассчитывать, пока пользователь работает, и каждые 5 минут сбрасывает запрос AJAX (getJSON), чтобы обновить lock_timestamp. Таким образом, я мог бы поддерживать, кто работает над записью. После того, как временная метка станет «старой», я могу предположить, что пользователь больше не работает с reocrd. Имел ли кто-нибудь опыт такого рода блокировки?

Solutions Collecting From Web of "PHP / MySQL / jQuery Пессимистичное блокирование записи"

Обновление lock_timestamp с помощью запросов AJAX является прекрасной стратегией и будет хорошо работать.

Тем не менее, 5-минутный интервал между вызовами кажется мне немного длинным. Если у вас действительно высокий трафик, примерно 30 секунд будет лучше с точки зрения пользователя. Представьте, что кому-то нужно подождать 5 минут, потому что другой пользователь открыл запись, а затем закрыл свой браузер …

Возможно, я глуп, но как насчет того, что jQuery отслеживает события мыши и клавиатуры на странице.

PHP помещает блокировку где-то в файловой системе или какой-то флаг в записи базы данных, поэтому следующий пользователь не сможет редактировать, а просто просматривать информацию. Файл будет содержать информацию пользователя в записи, поэтому, когда изменения отправляются, принимаются только его изменения

Хотя первый пользователь имеет активность на странице, ничего не происходит. 3 минуты пользователь ничего не делает, и ему будет предложено либо подтвердить, что он все еще работает над ним, либо он в течение 3 минут потеряет свои текущие изменения. Если он подтверждает, что ничего не происходит, но если он не удалит Ajax блокировку.

Если вы говорите, что пользователи могут занять несколько часов перед отправкой записи, тогда просто заблокировать 5 минут или что-то еще не будет.

Вместо этого, почему бы вам не реализовать какую-либо функцию проверки / проверки, которая была бы активирована (выписана) при редактировании записи и «сохранена» через равные промежутки времени и деактивирована (зарегистрирована), когда запись была сохраненный / сеанс истек / браузер закрыт / и т. д.