Как справиться с параллелизмом данных? - PullRequest
0 голосов
/ 30 марта 2012

Например, в моей системе я разрешаю пользователю создать список и добавить некоторую информацию в список, например.имя, адрес, телефон ...

И после создания списка он будет вставлен в базу данных, и на странице администратор может удалить список

Проблема заключается в том, что пользователь редактируетlist, администратор удалил список, и что произойдет?

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

Яиспользуя php, mysql и pdo для запроса
Спасибо

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

В принципе, вы не можете избежать этой ситуации. Пока пользователь редактирует форму, он не может узнать, была ли форма удалена.

Одним из решений было бы иметь флаг, как только пользователь начинает редактировать записи, что должно препятствовать тому, чтобы кто-либо редактировал в то же время / удалял в одно и то же время. Когда пользователь отправит форму, флаг должен вернуться к исходному значению, чтобы другие пользователи / администраторы могли редактировать / удалять эти записи.

Существует второе решение - использовать сервис и время от времени проверять на странице пользователя через ajax, есть ли записи еще там, но если у вас много входных данных, это может быть немного громоздким для реализации.

По сути, вам нужно создать что-то похожее на транзакцию, иначе. заблокировать записи, которые редактируются. Будьте очень осторожны, так как вы можете получить много заблокированных записей. Вам необходимо реализовать время, за которое пользователь должен завершить «транзакцию». Если по истечении этого времени есть заблокированные записи, разблокируйте их автоматически. Также помните о том, что пользователь может превысить это время, и вам также необходимо справиться с этой ситуацией, поскольку вы окажетесь в том же состоянии, что и исходная проблема.

PS: вам также следует остерегаться информации, которая была отредактирована, когда пользователь также редактировал, поскольку эта информация будет потеряна. Для части редактирования, я думаю, я бы пошел на подход хеширования, чтобы проверить состояние перед редактированием с состоянием после редактирования. с этого момента, вам решать, что делать.

0 голосов
/ 30 марта 2012

Ну почему бы вам просто не проверить, существует ли строка в соответствующей таблице, используя ее первичный ключ (id)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...