我有一个cms,每个页面都存储它在数据库中最后一次更新的时间。我已经在smarty(3.1)中设置了缓存,但我希望能够清除缓存并强制它创建一个新的缓存文件,如果自上次保存的缓存文件以来页面已更新,但为此我需要知道何时创建了缓存文件。
有没有办法获取缓存文件的时间戳?
由于
答案 0 :(得分:1)
我最近回答了一个类似的问题:Smarty cache site properties in database
<?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);
}
答案 1 :(得分:0)
我不确定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数据发生变化时,会认为文件已更改;也就是说,更新inode中的权限,所有者,组或其他元数据。另请参阅filemtime()(当您要在网页上创建“上次修改”页脚时)和fileatime()时要使用的内容。