Другой вопрос - насколько необходим такой кеш, ибо хранить там результат любого запроса без протухания - это весьма неверно, а мемкеш же будет сам выталкивать давно ненужные данные.
я вот тоже думал над чистильщиком... у меня в параллельном проекте - он по крону методично обходит все директории и смотрит актуальность файлов.
в мемкеше эта функция запускается по некоторому событию (переполнение кеша или таймаут...) но мемкеш - это демон.
здесь же - иная ситуация, все на клиенте, сервера обработки данных кеша нет (не путаем с БД). если начнешь шерстить кеш на валидность, то потеряешь драгоценное время, которое мы так хотим съэкономить. если каждый раз запускать шерстильщик кеша через exec паралельным процессом, то при сильной нагрузки - мы только нагрузим файловую систему лишними действиями. По этому - на данный момент, я считаю - это преждевременная оптимизация и на чистильщик решил не заморачиваться.
написмания скрипта чистки кеша на пхп - займет минут 30, еще час-полтора на отладку... На это способен каждый, кто участвует в обсуждении...
и запускать его по крону, и я не вижу никаких проблем.
если у кого есть какие идеи по чистильщику - то рад выслушать.
-~{}~ 06.01.08 00:58:
там в библиотеке так же сделано? %)
(качать с аплоадингов и прочих рапидшар это слишком)
читай пункт инсталляция и вопросы отпадут
-~{}~ 06.01.08 00:59:
но в любом реальном проекте как правило нужно чистить либо обновлять кэш при соответствующих изменениях в бд
в моем основном проекте так и сделано... сразу после реплики БД - запускается чистильщик кеша
Опять же крон
-~{}~ 06.01.08 01:04:
фс кэш эффективнее. разумеется сисктлы на сервере раздающем статику крутить надо
вообще как довольно быстрое решение - это поднять виртуальную фс - будет быстрее чем мемкеш, т.к обмен с мемкешем идет через сокеты, что уже ни есть быстро.
преимущество мемкеша - это использование его на отдельном сервере в кластере с несколькими WEB-серверами.
-~{}~ 06.01.08 01:20:
Т.е., например, если юзер добавил френда, то это станет заметно только после протухания соответствующего файла кэша?
вот это интересный момент...
если мы добавили нового френда, то мы, чтоб вычистить всесь задействованный кеш с участием данных френдов, должны знать все запросы, которые во всем проекте используют таблицу френдов... представляешь что для этого надо и как нужно реорганизовать проект?
Это уже скорее всего вопрос логики, а не уровня доступа к данным.
удалить файл на конкретный запрос - не проблема, это можно сделать и средствами пхп (всего три строки - можно и в одну):
PHP:
$md5query = md5($query);
$path = $cachePath + '/' + substr( $md5query ,0,2) + '/' + $md5query ;
unlink($path);