- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Доброго дня!
Делаю что-то похожее на кэш на файлах и папках.
Кеширую некоторые данные. Для каждого типа данных своя директория (stoly|stuliya|upakovka). КАждая порция (с разными id) сохраняется в файл (222|347324932|3252353). В одной папке файлов получится очень много: десятки тысяч. Это как, критчно? Может их еще как-то разбивать? по папкам первой буквы или как?
Сервак не выделенный, да и вообще, не хочется, чтобы это все зверски тормозило.
Как лучше?
Что можно почитать на тему как лучше и что быстрее? Даже запрос задать не могу, чтобы нагуглить.
Спасибо
Ну создайте папки от 0 до 10 и раскидывайте по ним.
И название папки куданибудь закиньте, чтобы считывалось и всё.
Насчёт того, что там у вас 100К файлов, не слишком страшно в современном мире, но потестируйте.
Доброго дня!
Делаю что-то похожее на кэш на файлах и папках.
Кеширую некоторые данные. Для каждого типа данных своя директория (stoly|stuliya|upakovka). КАждая порция (с разными id) сохраняется в файл (222|347324932|3252353). В одной папке файлов получится очень много: десятки тысяч. Это как, критчно? Может их еще как-то разбивать? по папкам первой буквы или как?
Сервак не выделенный, да и вообще, не хочется, чтобы это все зверски тормозило.
Как лучше?
Что можно почитать на тему как лучше и что быстрее? Даже запрос задать не могу, чтобы нагуглить.
Спасибо
Десятки тысяч для файловой системы не критично.
по слухам, 50 тысяч в одной папке не страшно.
Ну, сделайте, чтобы было не больше 10К для одной папки.
Но если делаете чтение каталога, то это уже другой разговор.
Спасибо. Прояснилось.
Вот еще нахабрил:
http://habrahabr.ru/qa/5574/
http://habrahabr.ru/qa/1196/
И тут интересная мысль, что тормоза начинаются при листинге.
Спасибо. Прояснилось.
Вот еще нахабрил:
http://habrahabr.ru/qa/5574/
http://habrahabr.ru/qa/1196/
И тут интересная мысль, что тормоза начинаются при листинге.
Правильно. Если вы начинаете листинг и он вам нужен, то это будет ужасно медленно, а если вы точечно запрашиваете файлы, то по сути можно очень и очень много хранить файлов в одной папке :)
Так или иначе, в большинстве случаев, все равно придется использовать листинг директорий - для манипулирования пачкой файлов, например, или при бекапе (в случае с кешем мб не особо актуально).
В свое время, просили сисадмина своего провентилировать данный вопрос - он рекомендовал не более 256 элементов в директории
Проблема может быть с очисткой кэша - при большом количестве файлов в директории их сразу все удалить не удается, вылетает ошибка, что слишком большое количество аргументов. Я, например, использую в качестве названия файла md5('идентификатор') и сохраняю файлы в директории по первым двум буквам хеша. Если использовать три буквы - получается слишком много директорий, если одну - слишком много файлов в каждой директории. Количество кэшируемых объектов - от 100к до миллиона.
Проблема может быть с очисткой кэша - при большом количестве файлов в директории их сразу все удалить не удается, вылетает ошибка, что слишком большое количество аргументов. Я, например, использую в качестве названия файла md5('идентификатор') и сохраняю файлы в директории по первым двум буквам хеша. Если использовать три буквы - получается слишком много директорий, если одну - слишком много файлов в каждой директории. Количество кэшируемых объектов - от 100к до миллиона.
а что значит "слишком большое количество аргументов"?
Это при readdir чтоли?
а что значит "слишком большое количество аргументов"?
Это при readdir чтоли?
rm * -rf
-bash: /bin/rm: Argument list too long
В этой ситуации помогает, конечно:
find . | xargs rm
Но я, например, в свое время этого не знал.
rm * -rf
-bash: /bin/rm: Argument list too long
В этой ситуации помогает, конечно:
find . | xargs rm
Но я, например, в свое время этого не знал.
Так это вроде шелл, а не пхп.