取得数据,支持批量取
mixed Driver_Cache_Driver_Database::get( string/array $key )
参数列表
参数 类型 描述 默认值 $key
string/array
$key
mixed
public function get($key)
{
if (is_array($key))
{
$md5_key = array();
$key_map = array();
foreach ($key as &$k)
{
$key_map[$this->prefix . $k] = $k;
$k = $this->prefix . $k;
$md5_key[] = md5($k);
}
$this->_handler->in('key', $md5_key);
}
else
{
$key = $this->prefix . $key;
$this->_handler->where('key', md5($key))->limit(1);
}
$rs = $this->_handler->select('key_string', 'value', 'number')->from($this->tablename)->and_where_open()->where('expire', 0)->or_where('expire', TIME,'>')->and_where_close()->get();
if ($rs->count())
{
if (is_array($key))
{
$return = array();
foreach ($rs as $data)
{
$data_key = $key_map[$data['key_string']];
$return[$data_key] = $data['value'];
if (''===$data['value'])
{
$return[$data_key] = $data['number'];
}
else
{
$this->_de_format_data($return[$data_key]);
}
}
}
else
{
$return = $rs->current();
if (''===$return['value'])
{
$return = $return['number'];
}
else
{
$return = $return['value'];
$this->_de_format_data($return);
}
}
if (IS_DEBUG)Core::debug()->info($key, 'database cache hit key');
unset($rs);
return $return;
}
else
{
if (IS_DEBUG)Core::debug()->error($key, 'database cache mis key');
}
return false;
}