![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| bagos |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 275 Регистрация: 17.6.2006 Репутация: нет Всего: 1 |
Всем привет, в пхп новичок да и с бд mysql мало знаком. Делаю простенький движок для сайта. Проектируя бд, встал вопрос: существует ли какая то блокировка таблиц или записей, ведь если один пользователь изменяет данные, а другой в это время тоже захочет их изменить, то получится белеберда в базе. Уверен что есть какие то инструменты или операторы позволяющие делать "блокировку". В какую сторону копать что читать. Заранее спасибо. Буду рад любой полезной информации.
Добавлено через 5 минут и 32 секунды для подключения к бд и работе с запросами использую библиотеку dbsimple http://dklab.ru/lib/DbSimple/manual.html можно ли с помощью нее производить блокировку? |
|||
|
||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 7 Всего: 67 |
читать, как обычно, в сторону мануала http://dev.mysql.com/doc/refman/5.1/en/inn...tion-model.html
-------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 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! |
|||
|
||||
| bagos |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 отключен |
|||
|
||||
| MuToGeN |
|
|||
![]() Лесник ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 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! |
|||
|
||||
| bagos |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 275 Регистрация: 17.6.2006 Репутация: нет Всего: 1 |
Спасибо, MuToGeN, думаю так и сделаю.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |