• 您好!欢迎来到ECSHOP插件网!
  • 注册
  • 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://ecshop51.com/article655.html
    版权所有 © 转载时必须以链接形式注明出处!

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

    实时购买动态 ×

    装在套子里的人会员 在 2020-10-23 购买了 ECSHOP自动虚拟商品补货功能 卡密自动补货系统 永久卡密现货 销售虚拟商品必备插件