Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: База на файлах

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Нужин метод запирания файла.
Саня_1991
Отправлено: 27 Февраля, 2014 - 23:16:24
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Февр. 2014  
Откуда: Первомайск Украина


Помог: 0 раз(а)




Написал базу на файлах в принципе при проверке держит большую зацикленость ( 0...100000000 ) бывает сбой при записи в большие файлы 80мб и выше. Эсть ли действующий вариант запирания файла?
 
 Top
OrmaJever Модератор
Отправлено: 27 Февраля, 2014 - 23:20:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




flock, хотя возможно и не поможет Растерялся


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Саня_1991
Отправлено: 27 Февраля, 2014 - 23:22:06
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Февр. 2014  
Откуда: Первомайск Украина


Помог: 0 раз(а)




flock не помогает.
 
 Top
man1
Отправлено: 28 Февраля, 2014 - 10:01:14
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




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

Вообще мне тоже интересна тематика бд на файлах. Если интересно, можно попробовать совместно обсудить идеи и наработки.
 
 Top
Саня_1991
Отправлено: 28 Февраля, 2014 - 14:11:06
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Февр. 2014  
Откуда: Первомайск Украина


Помог: 0 раз(а)




Я сначала тоже думал с кем то разрабатывать но нигде на форумах мастеров не регистрировался, а так помаленьку сам написал осталось подогнать и можно вылаживать в сеть.
man1 если тебе интересна тематика бд на файлах то могу сказать что я использую три функции:
1 - Создаю файл по md5 ( Шифрует к примеру Логин Название Имя )
2 - Присваеваю id номер записи для ускорения нахождения нужного md5 файла
3 - Так же как 1 только создаеться файл с id букв ввода для поиска
Не понял думаю не ясно но работаю над этим больше года
 
 Top
man1
Отправлено: 28 Февраля, 2014 - 16:23:52
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Саня_1991 пишет:
man1 если тебе интересна тематика бд на файлах то могу сказать что я использую три функции:
1 - Создаю файл по md5 ( Шифрует к примеру Логин Название Имя )
2 - Присваеваю id номер записи для ускорения нахождения нужного md5 файла
3 - Так же как 1 только создаеться файл с id букв ввода для поиска
Не понял думаю не ясно но работаю над этим больше года

Хех, это натурально бд на файлах (на миллионах файлах для большой БД), то есть для каждой записи из каждого поля таблицы БД у тебя соответствует свой файл. Я бы даже сказал что это не реализация СУБД, а реализация варианта индексирования (для быстрого поиск к заранее известной записи).

Какие функции интерфейса по работе с бд ты планировал? Например:
table_create(...)
table_update(...)
table_delete(...)
record_insert(...)
record_select(...)
record_update(...)
record_delete(...)
field_add(...)
...

Под бд на файлах я все же понимаю вот эти функции и файлы с которыми они работают (файл данных, файл записей и разметки, файл индексов).

(Отредактировано автором: 28 Февраля, 2014 - 16:26:17)

 
 Top
Саня_1991
Отправлено: 28 Февраля, 2014 - 19:45:44
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Февр. 2014  
Откуда: Первомайск Украина


Помог: 0 раз(а)




Если я правильно понял выше ты написал интерфейсы с мускула ? Я про мускул мало знаю правильно сказать ничего Огорчение . А написал "функции интерфейса" Добавить, Удалить, Получить инф. с файла, Поиск файла, Создать "Таблицу" в моем случаем папку.
А создаеться "таблица" папка:
users/md5 - разбераю строку md5 по первым 6-ти буквам на подпапки что бы уменьшить количество файлов в папке
/id - файлов в подпапках по 1000
/for_search - так же как в md5 только разберает по первым 3-м буквам (буквы переводяться в "индексы"). Как то так Улыбка
 
 Top
man1
Отправлено: 28 Февраля, 2014 - 22:41:45
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Саня_1991 пишет:
Если я правильно понял выше ты написал интерфейсы с мускула ? Я про мускул мало знаю правильно сказать ничего Огорчение . А написал "функции интерфейса" Добавить, Удалить, Получить инф. с файла, Поиск файла, Создать "Таблицу" в моем случаем папку.
А создаеться "таблица" папка:
users/md5 - разбераю строку md5 по первым 6-ти буквам на подпапки что бы уменьшить количество файлов в папке
/id - файлов в подпапках по 1000
/for_search - так же как в md5 только разберает по первым 3-м буквам (буквы переводяться в "индексы"). Как то так Улыбка

Я привел часто употребляемым операции над любыми данными (хоть в mysql, хоть на файлах). Вижу что ты увлечен реализацией, но чтобы оценить правильно ли ты делаешь, нужно знать насколько это соответствует задачам которые надо решить. Про md5 я не понял, зачем это везде там преследует.

Ты вообще пробовал работать с данными не раскидывая по файлам, а храня все что надо внутри одного-четырех специально организованных файла (с помощью функций fopen, fseek, fread, fwrite и т.д.)? Если не пробовал, то тогда дальше обсуждать нет смысла, ибо это будет означать отсутствие у тебя нужного опыта.

Да, хранить тысячи, а для больших данных миллионы файлов это вообще никуда не годиться - слишком медленно и монструозно.
 
 Top
Саня_1991
Отправлено: 28 Февраля, 2014 - 23:08:39
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Февр. 2014  
Откуда: Первомайск Украина


Помог: 0 раз(а)




Попробуй работать с одним файлом в 1000000 строк используя функцию file выведи его цыклом по 10 строк + постраничная навигация это долго, А ограничение "Fatal error: Allowed memory size" вот тебе "монструозно".
Медлено? Как? Если имеем полный путь к нужному файлу.
md5 не везде только в 1, а for_search использует реально введёный текст.
Может я чего то не понял.
(Добавление)
Файл 098f6bcd4621d373cade4e832627b4f6 .dat будет лежать в ..../md5/0/9/8/f/6/b/098f6bcd462 1d373cade4e832627b4f6.dat
Путь к файлу в ID.dat/ - test|..../md5/0/9/8/f/6/b/098f6bcd4621d373cade4e832627b4f6.dat|
Использование скажем в форуме нужно сообщение 34534 берём его id и получаем путь к файлу с сообщением + кто писал + дата +...
Я думаю это удобно если организовывать одну базу с админ панелью конечно можно писать под каждый модуль свой метод и использовать скажем для форума: Раздел/тема.dat
может оно лучше но везде нужно писать с индивидуальными потходом и требованиям, а так можно организовать более или менее универсальный способ хранения базы в файлах.
Ищо к верхнему сообщению прибавь поиск по ячейкам строк + перезапись строки или удаление + цыкл в два окна и нету базы зделал запирание и получаем огромное время ожидания.
Вот тут и нужный опыт.
Твои предложения?
 
 Top
man1
Отправлено: 28 Февраля, 2014 - 23:28:20
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Саня_1991 пишет:
Попробуй работать с одним файлом в 1000000 строк используя функцию file выведи его цыклом по 10 строк + постраничная навигация это долго, А ограничение "Fatal error: Allowed memory size" вот тебе "монструозно".
Медлено? Как? Если имеем полный путь к нужному файлу.
md5 не везде только в 1, а for_search использует реально введёный текст.
Может я чего то не понял.

Я что-то писал про функцию file? Таким способом читать данные больших файлов не получиться. Почитай описание к функциям fopen, fseek, fread, fwrite. С ними логика совсем другая, ты работаешь внутри одного файла, но при этом создаешь в нем структуру и перемещаешься по ней прямо внутри файла с помощью функции смещения указателя fseek!
 
 Top
Саня_1991
Отправлено: 28 Февраля, 2014 - 23:30:35
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Февр. 2014  
Откуда: Первомайск Украина


Помог: 0 раз(а)




Используя fread, fseek я добился коректной работы.
(Добавление)
Используя fread, fseek я не добился коректной работы. Пардон
 
 Top
man1
Отправлено: 28 Февраля, 2014 - 23:35:53
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Саня_1991 пишет:
Используя fread, fseek я не добился коректной работы.

И на этом основании ты сделал вывод что это невозможно и стал придумывать монстра на тысячах файлах? Улыбка
 
 Top
Саня_1991
Отправлено: 28 Февраля, 2014 - 23:38:45
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Февр. 2014  
Откуда: Первомайск Украина


Помог: 0 раз(а)




Если правильно понимаю fread, fseek то там нужно знать длину строки правильно?
 
 Top
man1
Отправлено: 28 Февраля, 2014 - 23:44:35
Post Id


Новичок


Покинул форум
Сообщений всего: 57
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Саня_1991 пишет:
Если правильно понимаю fread, fseek то там нужно знать длину строки правильно?

Я представляю это так (упрощенно):

my_table.dat - сюда в конец файла записывается строка данных (ограниченной или любой длины, не важно)
my_table.rec - а сюда в конец записывается 20-байтная строчка, первые десять байт содержать позиции начала записи в файле dat, вторые десять длину строки.

Это есть основа, от которой вырастает уже все остальное, потом прирастает система индексирования для быстрого поиска и т.д.
 
 Top
Саня_1991
Отправлено: 28 Февраля, 2014 - 23:48:49
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Февр. 2014  
Откуда: Первомайск Украина


Помог: 0 раз(а)




Интересно. php ограничевает по размеру файла?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB