Что будет работать быстрее? Файлы, папки и т.д.

12
Глумий
На сайте с 17.01.2007
Offline
71
1041

Доброго дня!

Делаю что-то похожее на кэш на файлах и папках.

Кеширую некоторые данные. Для каждого типа данных своя директория (stoly|stuliya|upakovka). КАждая порция (с разными id) сохраняется в файл (222|347324932|3252353). В одной папке файлов получится очень много: десятки тысяч. Это как, критчно? Может их еще как-то разбивать? по папкам первой буквы или как?

Сервак не выделенный, да и вообще, не хочется, чтобы это все зверски тормозило.

Как лучше?

Что можно почитать на тему как лучше и что быстрее? Даже запрос задать не могу, чтобы нагуглить.

Спасибо

Подскажите, как помочь (/ru/forum/421370)? Читать не перечитать. Тысячи отсканированных журналов и книг с удобным просмотром и без рекламы. ReadOz (http://fff.to/1fY)
LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#1

Ну создайте папки от 0 до 10 и раскидывайте по ним.

И название папки куданибудь закиньте, чтобы считывалось и всё.

Насчёт того, что там у вас 100К файлов, не слишком страшно в современном мире, но потестируйте.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
kdv12
На сайте с 05.12.2011
Offline
52
#2
Глумий:
Доброго дня!
Делаю что-то похожее на кэш на файлах и папках.

Кеширую некоторые данные. Для каждого типа данных своя директория (stoly|stuliya|upakovka). КАждая порция (с разными id) сохраняется в файл (222|347324932|3252353). В одной папке файлов получится очень много: десятки тысяч. Это как, критчно? Может их еще как-то разбивать? по папкам первой буквы или как?
Сервак не выделенный, да и вообще, не хочется, чтобы это все зверски тормозило.
Как лучше?
Что можно почитать на тему как лучше и что быстрее? Даже запрос задать не могу, чтобы нагуглить.
Спасибо

Десятки тысяч для файловой системы не критично.

Разработка сайтов любой сложности на 1С-Битрикс. Бесплатные консультации.
R
На сайте с 17.11.2011
Offline
22
#3

по слухам, 50 тысяч в одной папке не страшно.

Ну, сделайте, чтобы было не больше 10К для одной папки.

Но если делаете чтение каталога, то это уже другой разговор.

домашняя страница - google.com.ua
Глумий
На сайте с 17.01.2007
Offline
71
#4

Спасибо. Прояснилось.

Вот еще нахабрил:

http://habrahabr.ru/qa/5574/

http://habrahabr.ru/qa/1196/

И тут интересная мысль, что тормоза начинаются при листинге.

LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#5
Глумий:
Спасибо. Прояснилось.
Вот еще нахабрил:
http://habrahabr.ru/qa/5574/
http://habrahabr.ru/qa/1196/
И тут интересная мысль, что тормоза начинаются при листинге.

Правильно. Если вы начинаете листинг и он вам нужен, то это будет ужасно медленно, а если вы точечно запрашиваете файлы, то по сути можно очень и очень много хранить файлов в одной папке :)

М
На сайте с 08.02.2006
Offline
59
#6

Так или иначе, в большинстве случаев, все равно придется использовать листинг директорий - для манипулирования пачкой файлов, например, или при бекапе (в случае с кешем мб не особо актуально).

В свое время, просили сисадмина своего провентилировать данный вопрос - он рекомендовал не более 256 элементов в директории

vasvas
На сайте с 30.08.2007
Offline
100
#7

Проблема может быть с очисткой кэша - при большом количестве файлов в директории их сразу все удалить не удается, вылетает ошибка, что слишком большое количество аргументов. Я, например, использую в качестве названия файла md5('идентификатор') и сохраняю файлы в директории по первым двум буквам хеша. Если использовать три буквы - получается слишком много директорий, если одну - слишком много файлов в каждой директории. Количество кэшируемых объектов - от 100к до миллиона.

R
На сайте с 17.11.2011
Offline
22
#8
vasvas:
Проблема может быть с очисткой кэша - при большом количестве файлов в директории их сразу все удалить не удается, вылетает ошибка, что слишком большое количество аргументов. Я, например, использую в качестве названия файла md5('идентификатор') и сохраняю файлы в директории по первым двум буквам хеша. Если использовать три буквы - получается слишком много директорий, если одну - слишком много файлов в каждой директории. Количество кэшируемых объектов - от 100к до миллиона.

а что значит "слишком большое количество аргументов"?

Это при readdir чтоли?

vasvas
На сайте с 30.08.2007
Offline
100
#9
rommer:
а что значит "слишком большое количество аргументов"?
Это при readdir чтоли?

rm * -rf

-bash: /bin/rm: Argument list too long

В этой ситуации помогает, конечно:

find . | xargs rm

Но я, например, в свое время этого не знал.

R
На сайте с 17.11.2011
Offline
22
#10
vasvas:
rm * -rf
-bash: /bin/rm: Argument list too long

В этой ситуации помогает, конечно:

find . | xargs rm

Но я, например, в свое время этого не знал.

Так это вроде шелл, а не пхп.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий