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
Форумы портала PHP.SU :: Версия для печати :: Кэширование и количество файлов в папке
Форумы портала PHP.SU » » Вопросы новичков » Кэширование и количество файлов в папке

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

1. antobra - 06 Декабря, 2011 - 10:34:10 - перейти к сообщению
Ребят, прошу подсказать. С меня плюсик в Помог.

Сейчас у меня такая функция кэширования.

Пользователь заходит на страницу. Функция проверяет есть ли файл вида /folder/[идентикатор].cache. Если нет, то запрос в базу, помещение текста в /folder/[идентикатор].cache и вывод из этого файла.

Сейчас около 1000 файлов создалось по кэшированию. И у меня такой вопрос, а когда эта сумма будет 30 000, то функция будет работать медленнее? Верно? Т.к. Надо просканировать 30 тысяч файлов на совпадение. Или как?
2. LIME - 06 Декабря, 2011 - 10:37:40 - перейти к сообщению
antobra ну разумеется замедлится
можно разбить папку folder на подпапки по первому знаку идентификатора например (или по 2ум знакам)
тоесть /folder/xx/[идентикатор].cache.
3. EuGen - 06 Декабря, 2011 - 10:38:04 - перейти к сообщению
Проблемы могут быть в зависимости от ФС. Есть такие, которые работают медленно с большим количеством маленьких файлов. Есть те - которые быстро. Ко вторым отнесу ReiserFS, например.
30000 - не такая уж большая цифра.
В приведенном Вами алгоритме разумнее, я думаю, попросту воспользоваться кешированием на стороне БД или же используйте memcached.
4. LIME - 06 Декабря, 2011 - 10:40:09 - перейти к сообщению
но если база не удаленная наверное будет быстрее вообще без кэша))
в базе есть свой кэш + своя индексация
(предложенные подпапки это как раз типа индексации)
5. EuGen - 06 Декабря, 2011 - 10:43:17 - перейти к сообщению
LIME пишет:
но если база не удаленная наверное будет быстрее вообще без кэша

Аргументируйте, почему

Подпапки - решение проблемы "в ширину". Что, если объектов кеширования станет еще на порядок больше?
6. antobra - 06 Декабря, 2011 - 10:47:59 - перейти к сообщению
У меня за открытие 1 страницы делается 5-ть запросов в БД, делать еще запрос на данные, а именно на дизайнерскую часть как то не разумно. Каждый запрос в БД в среднем увеличивает время открытия страницы на 5-10% от предыдущего результата.

Да, я думал про первые буква логина, но я сделаю тогда по-другому.

Допустим лимит в папке 30 000 файлов будет. Я получаю айди, например 32500. Потом делю айди на макс. размер файлов в папке и округляю, т.е. ceil(32500/30000), получим 2. В эту папку этот кэш и поместится. Разумно?
7. Stierus - 06 Декабря, 2011 - 10:54:57 - перейти к сообщению
Я себе 1 раз написал скрипт кэша в ФС и везде им пользуюсь. Папки создаются так: ...\2 первых символа из строки хэша\3,4 символ из строки хэша\хэш.лог

 

Powered by ExBB FM 1.0 RC1