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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Кэширование и количество файлов в папке

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
antobra
Отправлено: 06 Декабря, 2011 - 10:34:10
Post Id


Посетитель


Покинул форум
Сообщений всего: 327
Дата рег-ции: Окт. 2010  


Помог: 1 раз(а)




Ребят, прошу подсказать. С меня плюсик в Помог.

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

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

Сейчас около 1000 файлов создалось по кэшированию. И у меня такой вопрос, а когда эта сумма будет 30 000, то функция будет работать медленнее? Верно? Т.к. Надо просканировать 30 тысяч файлов на совпадение. Или как?
 
 Top
LIME
Отправлено: 06 Декабря, 2011 - 10:37:40
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




antobra ну разумеется замедлится
можно разбить папку folder на подпапки по первому знаку идентификатора например (или по 2ум знакам)
тоесть /folder/xx/[идентикатор].cache.
 
 Top
EuGen Администратор
Отправлено: 06 Декабря, 2011 - 10:38:04
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Проблемы могут быть в зависимости от ФС. Есть такие, которые работают медленно с большим количеством маленьких файлов. Есть те - которые быстро. Ко вторым отнесу ReiserFS, например.
30000 - не такая уж большая цифра.
В приведенном Вами алгоритме разумнее, я думаю, попросту воспользоваться кешированием на стороне БД или же используйте memcached.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
LIME
Отправлено: 06 Декабря, 2011 - 10:40:09
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




но если база не удаленная наверное будет быстрее вообще без кэша))
в базе есть свой кэш + своя индексация
(предложенные подпапки это как раз типа индексации)
 
 Top
EuGen Администратор
Отправлено: 06 Декабря, 2011 - 10:43:17
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




LIME пишет:
но если база не удаленная наверное будет быстрее вообще без кэша

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

Подпапки - решение проблемы "в ширину". Что, если объектов кеширования станет еще на порядок больше?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
antobra
Отправлено: 06 Декабря, 2011 - 10:47:59
Post Id


Посетитель


Покинул форум
Сообщений всего: 327
Дата рег-ции: Окт. 2010  


Помог: 1 раз(а)




У меня за открытие 1 страницы делается 5-ть запросов в БД, делать еще запрос на данные, а именно на дизайнерскую часть как то не разумно. Каждый запрос в БД в среднем увеличивает время открытия страницы на 5-10% от предыдущего результата.

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

Допустим лимит в папке 30 000 файлов будет. Я получаю айди, например 32500. Потом делю айди на макс. размер файлов в папке и округляю, т.е. ceil(32500/30000), получим 2. В эту папку этот кэш и поместится. Разумно?
 
 Top
Stierus Супермодератор
Отправлено: 06 Декабря, 2011 - 10:54:57
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Я себе 1 раз написал скрипт кэша в ФС и везде им пользуюсь. Папки создаются так: ...\2 первых символа из строки хэша\3,4 символ из строки хэша\хэш.лог
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB