获取有关缓存的更新数据

时间:2014-01-29 10:09:50

标签: php mysql caching

我已经在我的php脚本中包含了缓存。缓存发生了很好但问题是即使数据库中的数据发生变化也没有得到反映..它显示了相同的旧数据.. 我想要的是,如果数据库中的任何数据发生变化,它应该获得新的数据。

<?php 
// Load the cache process i
include("cache.php"); 
// Connect to database 
include("config.php"); 
mysql_connect($db_host, $db_username, $db_password) or die(mysql_error()); mysql_select_db($db_name) or die(mysql_error()); ?>
 <html> 
<body>
 <h1>Articles</h1>
 <ul> 
<?php // Some query
 $q = mysql_query("SELECT * FROM articles ORDER BY id");
 while ($r = mysql_fetch_array($q)) { 
  echo '<li><a href="view_article.php?id='.$r['id'].'">'.$r['title'].'</a></li>';
 } ?>
 </ul>
 </body> 
</html> 
<?php // Save the cache include("cache_footer.php"); ?> 

2 个答案:

答案 0 :(得分:0)

这里的许多方法我会带着一定的旗帜。一个文件,一个变量或者什么。如果您进行db-query,则将该标志更改为其他内容,并且每次需要缓存时,请检查该标志是否已过期以及是否为 - &gt;重建缓存

编辑:

好的很简单,所以你明白了:

在您查询之前(或之后)执行:

file_put_contents('path/to/cache/cache.flag', md5(time()));
缓存文件中的

$ cacheversion ='someHashWhichYouUpdateEverytimeYouBuildANewCache';

if($cacheversion != file_get_contents(__DIR__.'/cache.flag') {
  //build a new cachefile and put the latest hash here
} else {
  echo $html;
}

答案 1 :(得分:0)

非常简单,在更改任何数据时删除缓存文件。 你也可以为每个标签/ thema创建一个单独的文件夹,所以你只能这个......