Есть два варианта поиска строки определенной. И получение соответственно ключа к нему.Формат ключ => URL. Обычно ищется по строке URL
.
1.Строка такого вида для первого варианта. ключ === http://google.com
.Получаем содержимое файла через file_get_contents()
.Потом через strpos
получаем строку(ну позицию).Строку разделяем по explode ('===', $str)
.Получаю ключ по $str[0]
.
2.Строка вида массива и используются массивы.(key=>11) Массив помещен также как и в первом варианте в файл с помощью serialize()
.И потом unserialize
( достаю с file_get_contents
).Получится массив и с помощью array_search()
достаю мой заветный ключ к URL.
Какой вариант лучше и почему?
И может свои варианты...
Как известно файловые системы - это неплохие базы данных, при правильном подходе... Предлагаю следующий вариант:
от url по которому будем искать получаем какой нибудь быстрый хэш. можно md5, можно функцией hash() например md4 (он вроде самый быстрый из встроенных в php).
От строки хеша в шестнадцетиричном виде (типа 8a64c7cb7a794bce2b727acc0362ee27
) получаем первые символы и представляем их в таком виде /8/a/64
.
Получаем file_get_contents
файл по вычисленному пути, т.е. you-dir/8/a/64.dat
Разбираем файл как вы предложили, поиском в массиве. Ищем строку. Только строки я предлагаю хранить задом наперед. Т.е. сначала URL потом знак табуляции (\t
) и ключ. И файл начинать пустой строкой, что бы первым символом шел перевод каретки. Тогда strpos ищем строку "\n$url\t"
- таким образом мы исключим любые разночтения.
Почему так ? Много файлов в одном каталоге на диске будут сильно тормозить. 256 файлов или каталогов - это не много для чтения одного каталога. Поэтому делаем иерархическую структуру. Делать более 2-3х уровней вложенности - то же плохо, да и смысла не особо много. При данном подходе мы в дерево уложим наши url так, что наш 50Mб файл будет разбит в среднем на куски по 762 байта ...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть форма для загрузки одного файла,как можно сделать так чтобы загружались и обрабатывались сразу два??
Как определить главную категорию товара? Код ниже определяет (к примеру) телефоны -> смартфоны, а мне нужно что бы определяло телефоны -> смартфоны