Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Блокировка данных 
:(
    Опции темы
bagos
Дата 6.9.2011, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 17.6.2006

Репутация: нет
Всего: 1



Всем привет, в пхп новичок да и с бд mysql мало знаком. Делаю простенький движок для сайта. Проектируя бд, встал вопрос: существует ли какая то блокировка таблиц или записей, ведь если один пользователь изменяет данные, а другой в это время тоже захочет их изменить, то получится белеберда в базе. Уверен что есть какие то инструменты или операторы позволяющие делать "блокировку". В какую сторону копать что читать. Заранее спасибо. Буду рад любой полезной информации.

Добавлено через 5 минут и 32 секунды
для подключения к бд и работе с запросами использую библиотеку dbsimple http://dklab.ru/lib/DbSimple/manual.html
можно ли с помощью нее производить блокировку?
PM MAIL   Вверх
solenko
Дата 6.9.2011, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 7
Всего: 67



читать, как обычно, в сторону мануала http://dev.mysql.com/doc/refman/5.1/en/inn...tion-model.html


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
MuToGeN
Дата 6.9.2011, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



1. Блокировка существует
2. В случае MySQL этим вопросом занимается сам MySQL (велосипедов изобретать не стоит)
3. Нюансы зависят от движка (к примеру, table-level locking в случае MyISAM и row-level locking для InnoDB)


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
bagos
Дата 20.9.2011, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 17.6.2006

Репутация: нет
Всего: 1



Попробую более детально описать задачу чтобы вы мне точно могли ответить нужна ли вообще в моем случае блокировка.
Схема проста:
1) Есть таблица пользователей users (id, login, pass, etc....)
2) Есть таблица новостей news (id, title, text, date, author_id, ...etc...)
Каждый из пользователей может добавлять новости, скажем их 10-20 и каждый вносит в базу отсебятину. При этом они могут изменять\добавлять\удалять записи.
Добавляться записи будут часто, удаляться и редактироваться крайне редко.

Нужны ли в таких случаях механизмы блокировок?

новости выводятся на страницу для простых пользователей select * from news;

зарег. пользователям новости также выводятся select * from news, апдейтятся UPDATE news SET title,..... WHERE id=?
использую MySQLi

хотелось бы реальный примерчик, уверен многие с этим сталкивались и могут поделиться опытом

и да мануал читал в инете шарился, инфы почему то мало :(

На дом. компьютере стоит денвер, знаю что не лучший вариант. InnoDb отключен

PM MAIL   Вверх
MuToGeN
Дата 22.9.2011, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Обычно решается следующим образом:
В таблицу news добавляем два поля, типа locked_by INT и locked_date DATETIME
При открытии в админке формы для редактирования новости в первое поле пишем id юзера, во второе - NOW().
При выдаче списка новостей со ссылками "редактировать" проверяем locked_by и locked_date (допустим, если было залочено более часа назад, то считаем, что юзер открыл страницу редактирования и закрыл вкладку браузера) и в случае чего пишем, мол, "в данный момент поправить не судьба, т.к. эту новость правит кто-то другой".
Соответственно, сохранить может только тот, на кого залочено (или кто угодно, если запись считаем разлоченной по таймауту).
Вот как-то так.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
bagos
Дата 22.9.2011, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 17.6.2006

Репутация: нет
Всего: 1



Спасибо, MuToGeN, думаю так и сделаю.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0481 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.