全站插件24小时自动发货

ecshop静态缓存源码分析

static_caches缓存文件存放在ecshop/temp/static_caches下面
先来看缓存工作的2个主要函数,写缓存和读缓存。
该函数在/includes/lib_base.php
写缓存
/**
 * 将结果写进缓存文件
 *
 * @params  string  $cache_name 缓存文件的名字
 * @params  string  $caches          缓存的内容
 *
 * @return
 */
function write_static_cache($cache_name, $caches)
{
    if ((DEBUG_MODE & 2) == 2)
    {
        return false;
    }
    //缓存的路径
    $cache_file_path = ROOT_PATH . '/temp/static_caches/' . $cache_name . '.php';
    //缓存内容$content
    $content = "<?php/r/n";
    $content .= "/$data = " . var_export($caches, true) . ";/r/n";
    $content .= "?>";
    //将内容写进缓存
    file_put_contents($cache_file_path, $content, LOCK_EX);
}
读缓存
/**
 * 读结果缓存文件
 *
 * @params  string  $cache_name//缓存文件的名字
 *
 * @return  array   $data
 */
function read_static_cache($cache_name)
{
    if ((DEBUG_MODE & 2) == 2)
    {
        return false;
    }
    //注意这里的静态变量用法
    static $result = array();
    //如果已经从缓存文件中读取了数据则直接返回结果
    if (!emptyempty($result[$cache_name]))
    {
        return $result[$cache_name];
    }
    //缓存文件的路径
    $cache_file_path = ROOT_PATH . '/temp/static_caches/' . $cache_name . '.php';
    //如果缓存文件存在就读取缓存
    if (file_exists($cache_file_path))
    {
        include_once($cache_file_path);
        $result[$cache_name] = $data;
        return $result[$cache_name];
    }
    else
    {
        return false;
    }
}
举一个ecshop中具体应用的例子来说明
/inlucdes/lib_goods.php文件里如下代码
function get_recommend_goods首页中展示的新品推荐、热卖商品、今日特价就是从这里来的
/**
 * 获得推荐商品
 *
 * @access  public
 * @param   string      $type       推荐类型,可以是 best, new, hot
 * @return  array
 * 代码我省略了一些,主要说明与缓存相关的代码
 */
function get_recommend_goods($type = '', $cats = '')
{
    /* 省略的代码...*/
    /* 读取缓存文件 */
    $data = read_static_cache('recommend_goods');
    if ($data === false) //如果缓存文件不存在
    {
        /* 从数据库中获取需要的数据 */
        /* 将从数据库中获取的数据写入到相应的缓存文件当中 */
        write_static_cache('recommend_goods', $goods_data);
    }
    else //如果缓存文件存在
    {
        /* 直接使用缓存数据 */
        $good_data = $data;
    }
}
//缓存结果在这里
<?php  
$data = array (
  'best' =>
  array (
    0 =>
    array (
      'goods_id' => '33',  
      'sort_order' => '0',  
    ),  
    1 =>   
    array (  
      'goods_id' => '19',  
      'sort_order' => '0',  
    ),  
    2 =>   
    array (  
      'goods_id' => '24',  
      'sort_order' => '0',  
    ),  
    3 =>   
    array (  
      'goods_id' => '20',  
      'sort_order' => '0',  
    ),  
    4 =>   
    array (  
      'goods_id' => '22',  
      'sort_order' => '0',  
    ),  
    5 =>   
    array (  
      'goods_id' => '8',  
      'sort_order' => '0',  
    ),  
    6 =>   
    array (  
      'goods_id' => '23',  
      'sort_order' => '0',  
    ),  
    7 =>   
    array (  
      'goods_id' => '9',  
      'sort_order' => '0',  
    ),  
    8 =>   
    array (  
      'goods_id' => '1',  
      'sort_order' => '0',  
    ),  
    9 =>   
    array (  
      'goods_id' => '17',  
      'sort_order' => '0',  
    ),  
    10 =>   
    array (  
      'goods_id' => '27',  
      'sort_order' => '0',  
    ),  
    11 =>   
    array (  
      'goods_id' => '30',  
      'sort_order' => '0',  
    ),  
    12 =>   
    array (  
      'goods_id' => '25',  
      'sort_order' => '0',  
    ),  
    13 =>   
    array (  
      'goods_id' => '29',  
      'sort_order' => '0',  
    ),  
    14 =>   
    array (  
      'goods_id' => '5',  
      'sort_order' => '0',  
    ),  
  ),  
  'new' =>   
  array (  
    0 =>   
    array (  
      'goods_id' => '33',  
      'sort_order' => '0',  
    ),  
    1 =>   
    array (  
      'goods_id' => '19',  
      'sort_order' => '0',  
    ),  
    2 =>   
    array (  
      'goods_id' => '32',  
      'sort_order' => '0',  
    ),  
    3 =>   
    array (  
      'goods_id' => '24',  
      'sort_order' => '0',  
    ),  
    4 =>   
    array (  
      'goods_id' => '20',  
      'sort_order' => '0',  
    ),  
    5 =>   
    array (  
      'goods_id' => '12',  
      'sort_order' => '0',  
    ),  
    6 =>   
    array (  
      'goods_id' => '22',  
      'sort_order' => '0',  
    ),  
    7 =>   
    array (  
      'goods_id' => '8',  
      'sort_order' => '0',  
    ),  
    8 =>   
    array (  
      'goods_id' => '23',  
      'sort_order' => '0',  
    ),  
    9 =>   
    array (  
      'goods_id' => '9',  
      'sort_order' => '0',  
    ),  
    10 =>   
    array (  
      'goods_id' => '1',  
      'sort_order' => '0',  
    ),  
    11 =>   
    array (  
      'goods_id' => '27',  
      'sort_order' => '0',  
    ),  
    12 =>   
    array (  
      'goods_id' => '5',  
      'sort_order' => '0',  
    ),  
  ),  
  'hot' =>   
  array (  
    0 =>   
    array (  
      'goods_id' => '33',  
      'sort_order' => '0',  
    ),  
    1 =>   
    array (  
      'goods_id' => '19',  
      'sort_order' => '0',  
    ),  
    2 =>   
    array (  
      'goods_id' => '32',  
      'sort_order' => '0',  
    ),  
    3 =>   
    array (  
      'goods_id' => '24',  
      'sort_order' => '0',  
    ),  
    4 =>   
    array (  
      'goods_id' => '20',  
      'sort_order' => '0',  
    ),  
    5 =>   
    array (  
      'goods_id' => '8',  
      'sort_order' => '0',  
    ),  
    6 =>   
    array (  
      'goods_id' => '9',  
      'sort_order' => '0',  
    ),  
    7 =>   
    array (  
      'goods_id' => '13',  
      'sort_order' => '0',  
    ),  
    8 =>   
    array (  
      'goods_id' => '10',  
      'sort_order' => '0',  
    ),  
    9 =>   
    array (  
      'goods_id' => '1',  
      'sort_order' => '0',  
    ),  
    10 =>   
    array (  
      'goods_id' => '14',  
      'sort_order' => '0',  
    ),  
    11 =>   
    array (  
      'goods_id' => '17',  
      'sort_order' => '0',  
    ),  
    12 =>   
    array (  
      'goods_id' => '27',  
      'sort_order' => '0',  
    ),  
    13 =>   
    array (  
      'goods_id' => '30',  
      'sort_order' => '0',  
    ),  
    14 =>   
    array (  
      'goods_id' => '25',  
      'sort_order' => '0',  
    ),  
    15 =>   
    array (  
      'goods_id' => '29',  
      'sort_order' => '0',  
    ),  
    16 =>   
    array (  
      'goods_id' => '28',  
      'sort_order' => '0',  
    ),  
    17 =>   
    array (  
      'goods_id' => '26',  
      'sort_order' => '0',  
    ),  
  ),  
  'brand' =>   
  array (  
    33 => 'jk',  
    19 => '三星',  
    32 => '诺基亚',  
    24 => '联想',  
    20 => '三星',  
    12 => '摩托罗拉',  
    22 => '多普达',  
    8 => '飞利浦',  
    23 => '诺基亚',  
    9 => '诺基亚',  
    13 => '诺基亚',  
    10 => '索爱',  
    1 => 'LG',  
    14 => '诺基亚',  
    17 => '夏新',  
    5 => '索爱',  
  ),  
);  
?> 

本文原创地址:https://www.ecshopok.com/article-655.html
版权所有 © 转载时必须以链接形式注明出处!

觉得本文对您有用,想收藏下来!方法很简单:请点击-〉
我们一直坚持白天工作、晚上熬夜更新资源,付出了巨大的精力和时间,其中的辛酸难以言述。

文章评论

暂无评论,来发表一个吧

发表 取消
充值有惊喜 ECSHOP插件网微信客服edait_cn