确定smarty何时创建缓存文件

时间:2011-10-14 16:39:16

标签: php smarty

我有一个cms,每个页面都存储它在数据库中最后一次更新的时间。我已经在smarty(3.1)中设置了缓存,但我希望能够清除缓存并强制它创建一个新的缓存文件,如果自上次保存的缓存文件以来页面已更新,但为此我需要知道何时创建了缓存文件。

有没有办法获取缓存文件的时间戳?

由于

2 个答案:

答案 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()时要使用的内容。