格式化set数据
boolean/string Module_Cache::_check_adv_data( string/array & $key , mixed & $value , string & $expire , $type )
参数列表
参数 类型 描述 默认值 $key
string/array
$key $value
mixed
$value $expire
string
$type $type
unknown
boolean/string
$exp_keyprotected function _check_adv_data(& $key, &$value, &$expire, $type)
{
if (is_array($key))
{
foreach ($key as $k => &$v)
{
$exp_key = $this->_check_adv_data($k, $v, $expire, $type);
if (is_string($exp_key) && is_array($k))
{
# 原来的$k是字符串,若变成了数组则表示需要增加一个计数器
$key[$exp_key] = 0;
}
}
}
else
{
# 产生一个随机key
$exp_key = md5(microtime(true) . mt_rand(100000000, 999999999));
# 修正
if (preg_match('#^([0-9]+)~([0-9]+),([0-9]+)/([0-9]+)$#', $expire, $match_exp))
{
$lifestr = $expire;
}
else
{
$lifestr = ((int)$expire / 2) . '~' . $expire . ',1/100';
}
$value = '__::foRMat_CacHe::Type=' . $type . ',ExpKey=' . $exp_key . ',Exp=' . $lifestr . ',SaveTime=' . TIME . ',Value=' . serialize($value);
if ($type == Cache::TYPE_ADV_HIT || $type == Cache::TYPE_MAX_HIT)
{
# 此类型需要增加计数器
if (is_array($key))
{
$key[$exp_key] = 0;
}
else
{
$key = array($key => $value, $exp_key => 1);
}
}
$expire = $match_exp[1];
return $exp_key;
}
}