选择语言 :

 Module_Cache::_check_adv_data

格式化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_key
File: ./modules/cache/cache.class.php
protected 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;
    }
}