2012-03-30 4 views
0

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

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

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

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

Я использую PHP, MySQL и PDO для запроса
Спасибо

+0

спасибо за редактирование –

+0

Что такое «список». Набор строк? Один ряд с некоторыми полями? Существуют ли другие таблицы, которые «определяют» допустимые значения в списке? Как вы «редактируете» список - загружаете ли вы его в память, модифицируете и сохраняете в одной транзакции, или вы отдельно загружаете и сохраняете в отдельные транзакции? УДАЛИТЬ/ВСТАВИТЬ или ВЫПОЛНИТЬ данные, которые были изменены? –

ответ

0

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

0

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

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

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

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

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

+0

флаг находится в базе данных? установить до 1 до изменения? –

Смежные вопросы