当前位置:无线网络首页 >> 软件开发 >> PHPCMS2008源码浅析
PHPCMS2008源码浅析 (7)
2009-07-21 16:39:54  作者:merlang  来源:数码人家整理  浏览次数:2207  文字大小:【】【】【

PHPCMS2008源码浅析之cache.func.php---cache_cache_table()函数讲解

//生成表的cache文件函数
//本函数会将数据库中,按主键ID生成数据表的cache文件,典型例子是 /data/cache/下category_*.php 的文件
function cache_table($table, $fields = '*', $valfield = '', $where = '', $order = '', $iscacheline = 0, $number = 0)
{
        global $db;   //调用全局变量数据库
        $keyfield = $db->get_primary($table);  //取表的主键名
        $data = array();
        if($where) $where = " WHERE $where";
        if(!$order) $order = $keyfield;     //设置order顺序
        $limit = $number ? "LIMIT 0,$number" : '';    //设置跑多少条数
        $result = $db->query("SELECT $fields FROM `$table` $where ORDER BY $order $limit");  //sql
        $table = preg_replace("/^".DB_PRE."(.*)$/", "\\1", $table);  //取table名
        while($r = $db->fetch_array($result))  
        {
                if(isset($r['setting']) && !empty($r['setting']))    //因为 一行数据中 setting是一个数组,所以要把它另拿出来,作为变量再与前面的merge
                {
                        $setting = $r['setting'];
                        eval("\$setting = $setting;");
                        unset($r['setting']);
                        if(is_array($setting)) $r = array_merge($r, $setting);   //merge两个组组
        }
                $key = $r[$keyfield];
                $value = $valfield ? $r[$valfield] : $r;
                $data[$key] = $value;
                if($iscacheline) cache_write($table.'_'.$key.'.php', $value);   //生成cache文件,格式为 表名_主键id.php
        }
        $db->free_result($result);
        cache_write($table.'.php', $data);   //生成全部数据   如/data/caceh/category.php 可以看一下数据结构就会明白了 

0

顶一下

0

踩一下
[1] [2] [3] [4] [5] [6] [7] [8] [9]
数码人家 | 版权声明 | 关于我们 | 友情链接 | 联系我们 | 广告服务 | 七年级下册

  • Copyright©2003-2018, 数码人家-网园 All Rights Reserved. 远山投姿欢迎您!
    陕ICP备05016083号-2
  •