Определение, когда smarty создал файл кеша - PullRequest
1 голос
/ 14 октября 2011

У меня есть cms, на каждой странице хранится время последнего обновления в базе данных.У меня настроено кэширование в smarty (3.1), но я хочу иметь возможность очистить кеш и заставить его создать новый файл кэша, если страница обновлялась с момента последнего сохраненного файла кэша, но для этого мне нужночтобы узнать, когда был создан кэшированный файл.

Есть ли способ получить метку времени кэшированного файла?

Спасибо

Ответы [ 2 ]

1 голос
/ 14 октября 2011

Недавно я ответил на аналогичный вопрос: Свойства сайта Smarty cache в базе данных

<?php
// fill these if you do cache grouping and or have different compiles of the same template
$template = 'foobar.tpl';
$cache_id = null;
$compile_id = null;

$smarty = new Smarty();
$tpl = $smarty->createTemplate($template, $cache_id, $compile_id);
if ($tpl->isCached() && $tpl->cached->timestamp < $yourTimestampFromDB) {
  $smarty->clearCache($template, $cache_id, $compile_id);
}
0 голосов
/ 14 октября 2011

Я не уверен, что у Smarty есть что-то внутреннее для этого.Но посмотрите на filemtime() и filectime, чтобы определить, когда файл был последний раз изменен и изменен соответственно.

От php.net:

$filename = 'somefile.txt';
if (file_exists($filename)) {
    echo "$filename was last changed: " . date("F d Y H:i:s.", filectime($filename));
}

Разница между временем изменения и временем изменения:

Примечание. В большинстве файловых систем Unix файл считается измененным, когдаданные инода изменены;то есть, когда права доступа, владелец, группа или другие метаданные из inode обновляются.Смотрите также filemtime () (это то, что вы хотите использовать, когда вы хотите создать нижние колонтитулы «Last Modified» на веб-страницах) и fileatime ().

...