static_caches缓存文件存放在ecshop/temp/static_caches下面
先来看缓存工作的2个主要函数,写缓存和读缓存。
该函数在ecshop/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 缓存文件的名字
- * @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;
- }
- }
- /**
- * 读结果缓存文件
- *
- * @params string $cache_name//缓存文件的名字
- *
- * @return array $data
- */
- function read_static_cache($cache_name)
- {
- if ((DEBUG_MODE & 2) == 2)
- {
- return false;
- }
- //注意这里的静态变量用法
- static $result = array();
- //如果已经从缓存文件中读取了数据则直接返回结果
- if (!empty($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中具体应用的例子来说明
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;
- }
- }
- /**
- * 获得推荐商品
- *
- * @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 => '索爱',
- ),
- );
- ?>
|