|
0 / 0 / 0
Регистрация: 04.08.2010
Сообщений: 12
|
|
Безопасность при работе с БД14.08.2010, 14:51. Показов 2045. Ответов 4
Метки нет (Все метки)
Привет. Вообщем у меня возникла такая проблема:
например, у меня есть 2 бд. Одна из них состоит из файлов, а другая на mysql. Так вот, сам вопрос: при одновременном обращении пользователей к странице, где изменяется информация в БД, не произойдет ли сбой или ошибка (запишется только часть информации или вылезет ошибка, что файл используется другим скриптом и открыть его невозможно)??? И, если произойдет, то где? (MySQL или файлы)
0
|
|
| 14.08.2010, 14:51 | |
|
Ответы с готовыми решениями:
4
Безопасность при генерации страниц! как сделать? Безопасность при работе с базой Безопасность при работе за чужим компьютером |
|
2 / 2 / 0
Регистрация: 14.08.2010
Сообщений: 6
|
||||||
| 14.08.2010, 18:26 | ||||||
|
Смотря какой у тебя код.
Вообще полезно было бы писать точный код : если что-то не так, то информация 100% не запишется в БД. С MySQL Ошибка может произойти в случае неправильной очистки кода. Посоветую перед записью в БД ( MySQL ) Обработать данные так :
1
|
||||||
|
0 / 0 / 0
Регистрация: 04.08.2010
Сообщений: 12
|
|
| 25.08.2010, 16:44 [ТС] | |
|
Спасибо за ответ! Но меня еще интересует вот какой вопрос:
Например, бд сайта создана на файлах. Я редактирую этот файл через админку, а в этот момент к этому файлу обращается посетитель, не возникнет ли ошибка (например, "Ошибка при открытии файла! Этот файл использует другая программа!")? По идее на MySQL такого возникнуть не должно, поэтому я выбрал его. Но все равно ответ будет полезен как и мне, так и многим новичкам!
0
|
|
|
2 / 2 / 0
Регистрация: 14.08.2010
Сообщений: 6
|
||||||||||||||||||||||||||
| 26.08.2010, 20:38 | ||||||||||||||||||||||||||
|
В MySQL 100% такого не будет, если я не ошибаюсь - там поддерживается многопоточность : каждое соединение подобно вновь открытому блокноту по 1 для каждого компьютера.
Насчёт файлов : существуют форумы на файлах, на них постоянно кто-то что-то пишет, кто-то просматривает темы и ниразу не было такого сообщения. Или ошибки. Конкретно про файлы : Вот статейка блокировки, возможно она написана муторно и непонятно, но ответы на ваши вопросы найдутся : [Ссылка удалена!] Статья с ссылки
Php блокировка
Суть проблемы такова: Есть база данных, используемая на сайте (например, база для регистрации пользователей, куда записывается их имя и email), она лежит в текстовом файле построчно (в дальнейшем, "file_base.dat".). Два пользователя активизируют сервер через командную строку в броузере, для ввода свох имен и email. Сервер отсылает их к скрипту. Оба пользователя "начинают движение" по скриптовому потоку (тексту php файла) сверху вниз, причем, Первый "бежит" на долю секунды быстрее Второго. Когда они достигают того места, где скрипт исполняет их запрос, движение по потоку останавливается, в их броузер выводится сгенерированная скриптом страница в виде html. Чтобы из file_base.dat прочитать данные, этот файл надо открыть на чтение (функция - @file), чтобы записать что-то в него, надо открыть на запись (функция - @fopen). В скрипте это выглядит так:
В связи с чем, была придумана функция: read_file
Суть подхода, который предлагаем мы для решения этой проблемы такой: Во время считывания из файла или записи в него данных, на сайте появляется текстовая строка с названием этого файла, когда из файла информация прочиталась или записалась, эта текстовая строка удаляется. Пока она есть, значит кто-то уже использует базу данных на чтение или запись, пользователь, который хочет обратиться к этой базе на чтение или запись, находится в цикле, ожидая пока текстовая строка исчезнет. Как только она исчезает, он читает или пишет в базу данных, сам при этом создавая такую же текстовую строку, тем самым препятствуя доступу двух и более пользователей к базе. Для чего, на сайте создадим папку для хранения текстовых строк. Например, lock. Наш файл на сайте лежит в папке database, значит в папке lock надо создать папку database. Теперь, когда пользователь обращается к file_base.dat, для чтения или записи в него, абсолютный путь http://наш_сайт.ru/database/file_base.dat, в папке http://наш_сайт.ru/lock/database/ появляется файл-строка file_base.dat.tmp, абсолютный путь - http://наш_сайт.ru/lock/database/file_base.dat.tmp, закрывая доступ к file_base.dat, как только пользователь считал или записал информацию в наш файл-базу, текстовая строка file_base.dat.tmp удаляется, открывая доступ другим пользователям к file_base.dat.
В этой ситуации мы видим, что когда один пользователь достиг точки считывания с file_base.dat или, наоборот, другой пытается записать в file_base.dat информацию, нам ничего не страшно. Потому что, как в одном, так и в другом случае, появился маленький текстовый файл file_base.dat.tmp, который не дает ни одному ни другому совместно читать или писать в file_base.dat. В нашем варианте есть одна "дыра", если вдруг пользователь обратился к базе данных, создав текстовую строку блокировки, незакончил как-бы цикл (свет погас и компьютер выключился), и эта текстовая блокирующая строка осталась лежать в папке Lock, то наша программа "подвиснет", не давая никому пройти, из-за этого оставшегося флага. Мы не стали усложнять функции проверкой на удаление этого файла-флага, а, просто ввели в функции его создающей, предел "подвисания" компьютера 10 секунд ($file_exist++; if($file_exist > 10){break;}), через 10 секунд он автоматически выйдет из цикла и сотрет временный файл. В этом кроется опасность, но она ничтожна мала по сравнению с теми, которые были описаны выше. Считаем, что подход описанный выше, защитит от обвала базы данных, которая лежит в текстовом файле и не будет особо заметно флагов блокировки, когда на сайте ее, одновременно использует до 10 человек. Мы знаем, что наш скрипт сервером исполняется 0,5 сек, в этом случае его пропускная способность в час составит до 1800 человек. Уменьшим ее вдвое, 900 человек, за сутки 21600 человек. Согласитесь, и без MySql можно обойтись. Для проверки работоспособности этих функций запишите вручную в папку Lock этот самый блокирующий файл file_base.dat.tmp, в нашем случае, это: http://наш_сайт.ru/lock/database/file_base.dat.tmp, тем самым, блокируя доступ к базе http://наш_сайт.ru/database/file_base.dat, запустите программу, обратитесь к базе, вы увидите, что флаг работает и броузер "стоит" на месте, удалите file_base.dat.tmp файл (разблокируя) и подвисание закончится. Теперь у нас есть функции: 1. FileArray , заменяющая @file 2. OpenFile , заменяющая @fopen 3. CloseFile , заменяющая @fclose Александр Устюгов http://omsk-777.ru/
1
|
||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 12
|
|
| 08.05.2011, 12:51 | |
|
Даже не знаю... я вот к примеру не получил ответ на свой вопрос. В нете случайно наткнулся на такое понятие как колизия (технический термин, которым называется проблема описаная автором этой темы). И нашел пути решения этой проблемы.
И у меня возник вопрос. Всё таки нужна блокировка чтения на время, когда идет запись, или не нужна? Или это делается скюЛ сервером автоматически? Речь едёт о необходимости применения "LOCK TABLES `table_name` WRITE" , каждый раз когда нужно что-то вставить, или обновить в mySQL-таблице. Тип использумой мною таблицы MyISAM. Заранее большое спасибо за ответ.
0
|
|
| 08.05.2011, 12:51 | |
|
Помогаю со студенческими работами здесь
5
то надо учитывать в работе с Сессиями чтоб повысить маскимально возможную безопасность? Исключение при работе с pictureBox (задание картинки при работе с формой) Грабли при работе STM32f4 при работе с ftp Безопасность при использовании Skype Аппаратная ошибка видео (Ошибка при работе с видеоустройствами привела к некорректной работе Windows). Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|