![]() |
Что будет быстрее работать?(теория)
Есть некая структура файлов(котороя не обновляется и не изменяется, просто папки и файлы).
Мне надо реализовать навигацию по этим файлам. Просто включить Options +Indexes не устраивает. Собственно что будет быстрее работать. Если мы загоним весь список файлов в базу(не сами файлы а просто их иерархию) и будем просто вытаскивать из базы. Или будем через system('ls') ползать? Или еще чтонибудь предложите? ЗЫ пока писал вспомнил про opendir/readdir. он наверно будет быстрее? |
База медленная штука. Используй readdir();
|
Базу юзай. Чтобы рекурсивно не лазить по директориям. Легче гораздо это. Да и теоретически быстрее.
Хотя для твоего проекта все равно - он не будет настолько популярным, чтобы замечать разницу. |
база имхо.
к теме надо опрос прикрутить =\ |
не нужен опрос. Да и автор не знает походу, что ему надо.
|
nerezus что ты на меня сразу набросился?
Цитата:
Кстати ненадо получать рекурсивно список файлов. Нужно только список из папки/подпапки. А нагрузка будет хотябы потому что файлов в папки будет порядка 500 штук(возможно больше) Цитата:
ЗЫ уже двое за базу. Кстати можно еще прокешировать запрос к базе(так-как инфа меняться будет ну очень редко) |
Тоже за базу. Должно быть быстрее.
|
бд полюбому будет лучшим вариантом.. 500 файлов постоянно дергать неудобно + с бд больше возможностей
|
Пока уезжал тема упала, ну да ясно что тут долго обсуждать.
Предлагаю свой вариант "что бы быстрее". Нам в любом случае понадобиться отсканить директории что бы мы не использовали базу или файл. Хранить дерево предлагаю в массиве такой структуры Код:
ArrayДалее, начинаем ускорять это дело. Мысль такая использовать кеширование в памяти. Т.е. будем хранить в памяти на сервере массив дерева каталогов при необходимости берем массив сразу из памяти, а не с файла/базы. Объем памяти потребуется относительно небольшой. Вот примерный расчет взят с моего диска С. Общее количество файлов и папок 14000 (установлена винда ХП, офис, и несколько других программок). Возьмем среднее количество букв в имени файла/папки равным 15 (символов). Итого имеем 14000*15=210000 (байт-символов) или 205 килобайт. Много мало решать вам. Теперь все это в коде. 1. Сканер директорий. PHP код:
PHP код:
Можно сделать разные проверки и прочее, но это нужно уже для конкретной задачи. Вот такое вот решение. Интересно услышать критику. З.Ы. Для использования кеша придется установить memcache. Очень коротко почитать можно тут http://www.webnext.ru/blog/2007/09/18/php-memcache.html Есть версия для винды (ей и пользовался) http://jehiah.cz/projects/memcached-win32/ |
А что ты мучаешься. один тест у тебя уже сделано напиши второй и для БД =)
Я думаю что БД быстрее т.к. хранить в каждом запущенном скрипте структуру из 14к элементов - накладно. Да и в БД есть тоже свой кеш, который можно настроить. |
| Время: 22:34 |