2016-04-28 34 views
2

我一直在寻找合适的PHP缓存方法的MSSQL结果。PHP数据库缓存,不包括文件

我可以找到的大多数示例都建议将结果存储在数组中,然后将其包含到页面中。这似乎很好,除非内容请求在更新/重建的同时进行。

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

我面临的问题是我需要在页面上执行6个查询来填充下拉框。这发生在绝大多数页面上。这也不是一个结合查询的选项。当系统改变时,缓存的数据也需要偶尔重建。这可能是一天一次,一周一次或一个月。任何意见将得到很大的收获,谢谢!

回答

2

您可以使用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)); 
} 

(错误检查跳过清晰度)

+1

Redis的是完美的这一点,因为是memcached。 –

+0

这是genuis!非常感谢你,明天会去 – atoms