UCHome 缓存技术的实现,PHP缓存技术实现

  在康盛UCH中创建缓存只要使用“cache_write”方法就可以直接生成缓存了,非常的方便。为此特地去寻找了下实现的方法以及缓存机制。

代码如下:
程序代码 程序代码

<?php
/**
*
* @param string $name
* @param <type> $var
* @param <type> $values
*
*/
define("S_ROOT",'cache/');
$name = 'test';
$vars = array('config','config2');
$values = array($vars,'sdfghf','trrsfa');
$var = '_SGLOBAL[\'test\']';

cache_write($name,$var,$values);

function cache_write($name, $var, $values) {
    $cachefile = S_ROOT.'./data_'.$name.'.php';//设置缓存文件地址
    //exit("File:$cachefile");
    $cachetext = "<?php\r\n".
    //    "if(!defined('IN_UCHOME')) exit('Access Denied');\r\n".
        '$'.$var.'='.arrayeval($values).//将数组转换成字符串
        "\r\n?>";
    if(!swritefile($cachefile, $cachetext)) {
        exit("File: $cachefile write error.");
    }
}
/**
* 数组转换成字串
* @param array $array 要转换的数组
* @param int $level 数组的层次
* @return string 返回转换后的字符串
*/
function arrayeval($array, $level = 0) {
    $space = '';
    for($i = 0; $i <= $level; $i++) {
        $space .= "\t";
    }
    $evaluate = "Array\n$space(\n";
    $comma = $space;
    foreach($array as $key => $val) {
                //addcslashes($key, '\'\\');只对'与\进行转义
        $key = is_string($key) ? '\''.addcslashes($key, '\'\\').'\'' : $key;
                //如果$key不是数字,则设置为字符串,如果是数字,则直接取数字
        $val = !is_array($val) && (!preg_match("/^\-?\d+$/", $val) || strlen($val) > 12 || substr($val, 0, 1)=='0') ? '\''.addcslashes($val, '\'\\').'\'' : $val;
        //如果$val不是数字,则设置为字符串,如果是数字,则直接取数字
                if(is_array($val)) {
                    //如果是数组,则再一次进行转换
            $evaluate .= "$comma$key => ".arrayeval($val, $level + 1);
        } else {
            $evaluate .= "$comma$key => $val";
        }
        $comma = ",\n$space";
    }
    $evaluate .= "\n$space)";
    return $evaluate;
}

//写入文件
function swritefile($filename, $writetext, $openmod='w') {
    if(@$fp = fopen($filename, $openmod)) {
        flock($fp, 2);
        fwrite($fp, $writetext);
        fclose($fp);
        return true;
    } else {
        //runlog('error', "File: $filename write error.");
        
        return false;
    }
}

?>




文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: UCHome 缓存 PHP
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.