PHP数据库缓存,不包括文件


PHP DB caching, without including files

我一直在为MSSQL结果寻找合适的PHP缓存方法。

我能找到的大多数例子都建议将结果存储在一个数组中,然后将其包含在页面中。除非在更新/重建内容的同时提出对内容的请求,否则这似乎很棒。

我希望能找到类似于ASP应用程序级变量的东西,但据我所知,PHP不提供这个功能?

我面临的问题是,我需要在页面上执行6个查询来填充下拉框。这种情况发生在绝大多数页面上。它也不是组合查询的选项。当系统发生变化时,缓存的数据也需要偶尔重建。这可能是一天一次,一周一次或一个月一次。任何建议我们都会非常乐意接受,谢谢!

您可以使用Redis服务器和phpredis PHP扩展来缓存从数据库提取的结果:

$redis = new Redis();
$redis->connect('/tmp/redis.sock');
$sql = "SELECT something FROM sometable WHERE condition";
$sql_hash = md5($sql);
$redis_key = "dbcache:${sql_hash}";
$ttl = 3600; // values expire in 1 hour
if ($result = $redis->get($redis_key)) {
  $result = json_decode($result, true);
} else {
  $result = Db::fetchArray($sql);
  $redis->setex($redis_key, $ttl, json_encode($result));
}

(为清楚起见,跳过错误检查)