2016-09-13 5 views
0

Мне интересно, как кэш-системы, такие как доктрина-кэш или zend-кеш, устанавливают срок действия файлов кеша, если эти файлы не находятся в папке/tmp. Как установить истечение срока для файлов кеша? Если я хочу использовать собственную файловую систему кеша с php, а не использовать доктрину или zend, как я могу установить для нее истечение срока, если я не хочу размещать ее в папке/tmp?Как установить срок действия для файла кэша?

ответ

1

Я бы рекомендовал использовать службу кеша как Memcached. Существует third parameter для функции , что означает количество секунд, после которых значение истечет.

+0

Я знаю о системах памяти. Но здесь мой вопрос касается файлового кеша. Во всяком случае, я все еще голосую за тебя. – user4271704

+0

Ох. Тогда я думаю, вы должны запрограммировать логику истечения самостоятельно. Посмотрите на этот ответ: http://stackoverflow.com/questions/5262857/5-minute-file-cache-in-php –

+0

Как указано в этой ссылке, как заблокировать с помощью rename()? Он блокирует суматоматически или какой параметр должен пройти для блокировки? @Wax Cage – user4271704

2

Кэш довольно прост. Допустим, у вас есть каталог 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 кэша и т.д. с истекает заголовок, лак и т.д.

+0

На самом деле я хочу использовать его для файла .dat ir .txt, а не для страницы, так что все-таки можно использовать кеш http, как вы сказали? В кэше выборки истекает через 60 часов? Для .txt-файла лучше использовать filectime, а не filemtime? @Robert – user4271704

+0

да, это можно сделать с помощью веб-сервера, например, в apache http://httpd.apache.org/docs/current/mod/mod_expires.html – Robert