Comments 19
а что будет если нужно прочитать параллельно из несколько десятков файлов?
я видел человека, который как-то сделал файл-хостинг без базы данных — все хранилось в генерируемых php файлах, в итоге у него валились винты
я видел человека, который как-то сделал файл-хостинг без базы данных — все хранилось в генерируемых php файлах, в итоге у него валились винты
Скорость работы файлового кеша будет очень сильно зависеть от быстродействия жестких дисков и активности файловых операций (особенно актуально, если используется shared-хостинг). Во всяком случае, RAM быстрее RAID'ов.
угу, вот только если файлов станет несколько десятков тысяч, или под полсотни тысяч, да еще и мелких…
цифр не дам, но у меня когдато такое было, мемкешед (локальный) был намного эффективнее.
цифр не дам, но у меня когдато такое было, мемкешед (локальный) был намного эффективнее.
думаю, кому-то пригодится. для мелких проектов.
но с другой стороны зачем на мелких проектах кеш?
но с другой стороны зачем на мелких проектах кеш?
Но доля правды в этом посте есть… Есть проект с достаточно большой посещаемостью (примерно 40-50 тысяч пользователей в сутки, которые проводят на сайте от 15 минут до целого дня) который полностью работает на файлах и не использует ни одной БД.
Если делать файловый кеш, то хорошо бы сразу применить кеш-контроллер с концепцией фронтэнд-бекенд, как например в Zend Cache. Фронтэнд — это постоянный интерфейс для программиста, бекенд может быть любым (файлы, memcached, APT, XCache...)
если будет много записей, а не одна, то всё равно обращения к винту будут (на запись), что будет много медленнее записи в оперативку.
А вообще у нас пока у самих рамдиск и на него файлокэши сохраняются. Но собираемся переходить на memcache — оно как-то получше в свете наших дальнейших развитий выглядит.
А вообще у нас пока у самих рамдиск и на него файлокэши сохраняются. Но собираемся переходить на memcache — оно как-то получше в свете наших дальнейших развитий выглядит.
Если под линуксом, то проще ли использовать tmpfs в оперативке.
Работать можно как с обычными файлами, и ничего выдумывать не надо.
Работать можно как с обычными файлами, и ничего выдумывать не надо.
С memcache тоже все непросто, при хабраэффекте легко упираемся в дедлоки. Я так решаю эту проблему: Победить дедлоки memache в php
при кеше в файлах я этот вопрос решал нежестким временем жизни кеша.
например так:
$livetime = 600 + mt_rand(0, 300); // время кеша от 600 до 900 секунд
т.о. тяжелые запросы в БД генерили только 1-3 юзера, при посещении 300 запросов в сек.
в memcached так не получится, т.к. время жизни задается сразу и его нельзя поменять,
но можно выкрутиться, например считать кеш старым не по времени, а по вероятности:
$isCacheValid = mt_rand(1,1000) == 500;
например так:
$livetime = 600 + mt_rand(0, 300); // время кеша от 600 до 900 секунд
т.о. тяжелые запросы в БД генерили только 1-3 юзера, при посещении 300 запросов в сек.
в memcached так не получится, т.к. время жизни задается сразу и его нельзя поменять,
но можно выкрутиться, например считать кеш старым не по времени, а по вероятности:
$isCacheValid = mt_rand(1,1000) == 500;
А ещё можно писать так:
Sign up to leave a comment.
Когда файлы не хуже, чем memcached