Мне интересно, как кэш-системы, такие как доктрина-кэш или zend-кеш, устанавливают срок действия файлов кеша, если эти файлы не находятся в папке/tmp. Как установить истечение срока для файлов кеша? Если я хочу использовать собственную файловую систему кеша с php, а не использовать доктрину или zend, как я могу установить для нее истечение срока, если я не хочу размещать ее в папке/tmp?Как установить срок действия для файла кэша?
ответ
Я бы рекомендовал использовать службу кеша как Memcached. Существует third parameter для функции , что означает количество секунд, после которых значение истечет.
Кэш довольно прост. Допустим, у вас есть каталог cache
. Вы устанавливаете время истечения для файлов, которые находятся там под переменной $expire
Так алгоритм
$file = "cache/cached.jpg";
$expire = 60 * 3600;
if (filectime($file) > time() + $expire)
{
// reload file and invalidate cache
} else if (file_exists($file){
// get from cache
} else {
// get file and save it to cache then return
}
но лучше использовать кэша, которые там как HTTP кэша и т.д. с истекает заголовок, лак и т.д.
На самом деле я хочу использовать его для файла .dat ir .txt, а не для страницы, так что все-таки можно использовать кеш http, как вы сказали? В кэше выборки истекает через 60 часов? Для .txt-файла лучше использовать filectime, а не filemtime? @Robert – user4271704
да, это можно сделать с помощью веб-сервера, например, в apache http://httpd.apache.org/docs/current/mod/mod_expires.html – Robert
Я знаю о системах памяти. Но здесь мой вопрос касается файлового кеша. Во всяком случае, я все еще голосую за тебя. – user4271704
Ох. Тогда я думаю, вы должны запрограммировать логику истечения самостоятельно. Посмотрите на этот ответ: http://stackoverflow.com/questions/5262857/5-minute-file-cache-in-php –
Как указано в этой ссылке, как заблокировать с помощью rename()? Он блокирует суматоматически или какой параметр должен пройти для блокировки? @Wax Cage – user4271704