|
发表于 2013-8-21 20:33:33
|
显示全部楼层
PHP复制代码 function query_cache ($key, $model, $method, $params = array(), $ttl = 1296000) {
$CI = & get_instance ();
// 如果是本地测试等不支持memcache的环境,直接从model中获取数据后返回
if (!$CI->cache->memcached->is_supported()) {
// model是否已经加载?
// Load models on demand
if (!in_array($model, $CI->load->_ci_models , TRUE)) {
$CI->load->model($model);
}
// Ref this model
$handler = & $CI->$model;
return call_user_func_array(array($handler, $method), $params);
}
// 如果数据没有被缓存或者已经过期
if (!$data = $CI->cache->memcached->get($key)) {
// model是否已经加载?
// Load models on demand
if (!in_array($model, $CI->load->_ci_models , TRUE)) {
$CI->load->model($model);
}
// Ref this model
$handler = & $CI->$model;
// 从model中获取数据
$data = call_user_func_array(array($handler, $method), $params);
// 提醒: 空结果 (0, FALSE) 会忽略!
if (!empty($data)) {
// 缓存该数据
$CI->cache->memcached->save('result_'.$key, $data, $ttl);
//注意所有数据缓存加了一个‘result_’前缀,以便跟output_,以及session区分
}
}
return $data;
} 复制代码 |
|