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 :: Хранение KEY => VALUE в текстовом файле и быстрая выборка

 PHP.SU

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


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

> Без описания
mucha
Отправлено: 24 Ноября, 2012 - 18:57:09
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2010  


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




Добрый день.

Задача:
Быстрое получение значения VALUE из текстового файла по ключу KEY. БД использовать не хочется.

Файл допустим выглядит:
KEY1:VALUE1
KEY2:VALUE2
KEY3:VALUE3

Допустим размер файла 100, 1 000 и 1 000 000 записей.

Подскажите быстрый алгоритм? )
 
 Top
esterio
Отправлено: 24 Ноября, 2012 - 19:02:54
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




Используйте для сохранения
file_put_contents('__file__', serialize($array));
и для чтения
$array = unserialize(file_get_contents('__file__'));
 
 Top
mucha
Отправлено: 24 Ноября, 2012 - 19:06:02
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2010  


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




Ммм.. хранить в массиве 1 000 000 записей (к примеру) разве оптимально? )
 
 Top
esterio
Отправлено: 24 Ноября, 2012 - 19:10:50
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




1 лям записей в файле ето полюбому извращение.
Вы задали вопрос я ответил
Серилизация очень шустрая в ПХП так как ето Си-шная функция - ето намного бистрей чем fread
Ну а если про оптимизаю в файле - то делайте тогда сдвих, вычисляйте, читайте по кусках файл, есть много способов
И все одно такое количество лучше в БД хранить, там также файлы, но отимизация там куда лучше чем у Вас получиться.

Так-что вывод следующий отбросте фразу
mucha пишет:
БД использовать не хочется.
и все таки исползуйте мускуль. Для него такое количество не проблема.

Да будет вам счастье!!!!
 
 Top
caballero
Отправлено: 24 Ноября, 2012 - 19:13:15
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




возьми SQLite
тот же самый файлик только с функционалом БД


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
esterio
Отправлено: 24 Ноября, 2012 - 19:19:11
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




caballero пишет:
возьми SQLite

Также отличный вариант. Я бы сказал даже лучше подойдет для ТС

mucha
Не придумывай собственный велисопед для тривиальных задач
 
 Top
mucha
Отправлено: 24 Ноября, 2012 - 19:22:24
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2010  


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




Я не пытаюсь придумать велосипед, я лишь хочу узнать об алгоритмах.

Существующие БД вполне решат данный вопрос, но как решить его не используя БД? ))
 
 Top
OrmaJever Модератор
Отправлено: 24 Ноября, 2012 - 19:27:48
Post Id



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


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


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




mucha пишет:
Я не пытаюсь придумать велосипед

Если вы читаете что млн строк хранить в файле и брать одну по ключу это не велосипед то я даже не знаю. БД имено для этого и придумана, почему бы её не использовать?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
LIME
Отправлено: 24 Ноября, 2012 - 19:28:03
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




когдато ктото также искал алгоритм побыстрее
потом оптимизировал его еще и еще
в итоге получили серверы БД ))
 
 Top
mucha
Отправлено: 24 Ноября, 2012 - 19:31:21
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июль 2010  


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




Я пока ничего не считаю Улыбка

Сейчас я скачал словарь для брутфорса (для примера) размером в сотним Мбайт и будут тестировать то, что предложили вы Улыбка.
 
 Top
esterio
Отправлено: 24 Ноября, 2012 - 19:32:09
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




Да ладн, не ругайтесь, может человек для академичиских целей такое делает.
Если да, то вскоре поймет что БД лучше и бистрее
Таке согласен с пользователем LIME. Если никто бы не шевелился, то б до сих пор использовали fread и fwrite.

Есил чесно буду очен рад если ТС напишет нечто больше чес просто key=>value в файле. Вдрег там будет полный CRUD с плюшками

(Отредактировано автором: 24 Ноября, 2012 - 19:32:53)

 
 Top
LIME
Отправлено: 24 Ноября, 2012 - 19:38:17
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




вообщето я хотел сказать что бд это и есть искомый алгоритм))
абсурдность вопроса не улавливаете?
дайте мне Это но Это не предлагайте
 
 Top
esterio
Отправлено: 24 Ноября, 2012 - 19:41:27
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




LIME
значит я не правильно Вас понял. Извиняюсь



Но все же я считаю что все таки нужно что-нибуть иногда делать свое(родное), а не пользоваться тем что есть. Пусть ето будет очередной велосипед, пусть он будет не такой какый уже есть, но все же ето свое, и ой как поднимает навык

(Отредактировано автором: 24 Ноября, 2012 - 19:41:52)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB