ecshop源码分析——静态缓存

tatic_caches缓存文件存放在ecshop/temp/static_caches下面

先来看缓存工作的2个主要函数,写缓存和读缓存。

该函数在ecshop/includes/lib_base.php

写缓存 

 

Php代码 

1.      /** 

2.       * 将结果写进缓存文件 

3.       * 

4.       * @params  string  $cache_name 缓存文件的名字 

5.       * @params  string  $caches          缓存的内容 

6.       * 

7.       * @return 

8.       */  

9.      function write_static_cache($cache_name$caches)  

10.  {  

11.      if ((DEBUG_MODE & 2) == 2)  

12.      {  

13.          return false;  

14.      }  

15.  //缓存的路径  

16.      $cache_file_path = ROOT_PATH . '/temp/static_caches/' . $cache_name . '.php';  

17.  //缓存内容$content  

18.      $content = "<?php/r/n";  

19.      $content .= "/$data = " . var_export($caches, true) . ";/r/n";  

20.      $content .= "?>";  

21.  //将内容写进缓存  

22.      file_put_contents($cache_file_path$content, LOCK_EX);  

23.  }  

 

 读缓存

Php代码 

1.      /** 

2.       * 读结果缓存文件 

3.       * 

4.       * @params  string  $cache_name//缓存文件的名字 

5.       * 

6.       * @return  array   $data 

7.       */  

8.      function read_static_cache($cache_name)  

9.      {  

10.      if ((DEBUG_MODE & 2) == 2)  

11.      {  

12.          return false;  

13.      }  

14.  //注意这里的静态变量用法  

15.      static $result = array();  

16.  //如果已经从缓存文件中读取了数据则直接返回结果  

17.      if (!emptyempty($result[$cache_name]))  

18.      {  

19.          return $result[$cache_name];  

20.      }  

21.  //缓存文件的路径  

22.      $cache_file_path = ROOT_PATH . '/temp/static_caches/' . $cache_name . '.php';  

23.  //如果缓存文件存在就读取缓存  

24.      if (file_exists($cache_file_path))  

25.      {  

26.          include_once($cache_file_path);  

27.          $result[$cache_name] = $data;  

28.          return $result[$cache_name];  

29.      }  

30.      else  

31.      {  

32.          return false;  

33.      }  

34.  }  

举一个ecshop中具体应用的例子来说明

 

ecshop/inlucdes/lib_goods.php

 

function get_recommend_goods首页中展示的新品推荐、热卖商品、今日特价就是从这里来的

 

Php代码 

1.      /** 

2.       * 获得推荐商品 

3.       * 

4.       * @access  public 

5.       * @param   string      $type       推荐类型,可以是 best, new, hot 

6.       * @return  array 

7.       */  

8.      //代码我省略了一些,主要说明与缓存相关的代码  

9.       */  

10.  function get_recommend_goods($type = ''$cats = '')  

11.  {  

12.    /* 省略的代码。。。。*/  

13.    /*读取缓存文件*/  

14.    $data = read_static_cache('recommend_goods');  

15.    if($data==false) //如果缓存文件不存在  

16.    {  

17.        /*从数据库中获取需要的数据*/  

18.       /*将从数据库中获取的数据写入到相应的缓存文件当中*/  

19.        write_static_cache('recommend_goods'$goods_data);  

20.    }else //如果缓存文件存在  

21.    {  

22.        /*直接使用缓存数据*/  

23.        $good_data=$data;  

24.    }  

25.  }  

Java代码 

1.      //缓存结果在这里     <?php  

2.      $data = array (  

3.        'best' =>   

4.        array (  

5.          0 =>   

6.          array (  

7.            'goods_id' => '33',  

8.            'sort_order' => '0',  

9.          ),  

10.      1 =>   

11.      array (  

12.        'goods_id' => '19',  

13.        'sort_order' => '0',  

14.      ),  

15.      2 =>   

16.      array (  

17.        'goods_id' => '24',  

18.        'sort_order' => '0',  

19.      ),  

20.      3 =>   

21.      array (  

22.        'goods_id' => '20',  

23.        'sort_order' => '0',  

24.      ),  

25.      4 =>   

26.      array (  

27.        'goods_id' => '22',  

28.        'sort_order' => '0',  

29.      ),  

30.      5 =>   

31.      array (  

32.        'goods_id' => '8',  

33.        'sort_order' => '0',  

34.      ),  

35.      6 =>   

36.      array (  

37.        'goods_id' => '23',  

38.        'sort_order' => '0',  

39.      ),  

40.      7 =>   

41.      array (  

42.        'goods_id' => '9',  

43.        'sort_order' => '0',  

44.      ),  

45.      8 =>   

46.      array (  

47.        'goods_id' => '1',  

48.        'sort_order' => '0',  

49.      ),  

50.      9 =>   

51.      array (  

52.        'goods_id' => '17',  

53.        'sort_order' => '0',  

54.      ),  

55.      10 =>   

56.      array (  

57.        'goods_id' => '27',  

58.        'sort_order' => '0',  

59.      ),  

60.      11 =>   

61.      array (  

62.        'goods_id' => '30',  

63.        'sort_order' => '0',  

64.      ),  

65.      12 =>   

66.      array (  

67.        'goods_id' => '25',  

68.        'sort_order' => '0',  

69.      ),  

70.      13 =>   

71.      array (  

72.        'goods_id' => '29',  

73.        'sort_order' => '0',  

74.      ),  

75.      14 =>   

76.      array (  

77.        'goods_id' => '5',  

78.        'sort_order' => '0',  

79.      ),  

80.    ),  

81.    'new' =>   

82.    array (  

83.      0 =>   

84.      array (  

85.        'goods_id' => '33',  

86.        'sort_order' => '0',  

87.      ),  

88.      1 =>   

89.      array (  

90.        'goods_id' => '19',  

91.        'sort_order' => '0',  

92.      ),  

93.      2 =>   

94.      array (  

95.        'goods_id' => '32',  

96.        'sort_order' => '0',  

97.      ),  

98.      3 =>   

99.      array (  

100.         'goods_id' => '24',  

101.         'sort_order' => '0',  

102.       ),  

103.       4 =>   

104.       array (  

105.         'goods_id' => '20',  

106.         'sort_order' => '0',  

107.       ),  

108.       5 =>   

109.       array (  

110.         'goods_id' => '12',  

111.         'sort_order' => '0',  

112.       ),  

113.       6 =>   

114.       array (  

115.         'goods_id' => '22',  

116.         'sort_order' => '0',  

117.       ),  

118.       7 =>   

119.       array (  

120.         'goods_id' => '8',  

121.         'sort_order' => '0',  

122.       ),  

123.       8 =>   

124.       array (  

125.         'goods_id' => '23',  

126.         'sort_order' => '0',  

127.       ),  

128.       9 =>   

129.       array (  

130.         'goods_id' => '9',  

131.         'sort_order' => '0',  

132.       ),  

133.       10 =>   

134.       array (  

135.         'goods_id' => '1',  

136.         'sort_order' => '0',  

137.       ),  

138.       11 =>   

139.       array (  

140.         'goods_id' => '27',  

141.         'sort_order' => '0',  

142.       ),  

143.       12 =>   

144.       array (  

145.         'goods_id' => '5',  

146.         'sort_order' => '0',  

147.       ),  

148.     ),  

149.     'hot' =>   

150.     array (  

151.       0 =>   

152.       array (  

153.         'goods_id' => '33',  

154.         'sort_order' => '0',  

155.       ),  

156.       1 =>   

157.       array (  

158.         'goods_id' => '19',  

159.         'sort_order' => '0',  

160.       ),  

161.       2 =>   

162.       array (  

163.         'goods_id' => '32',  

164.         'sort_order' => '0',  

165.       ),  

166.       3 =>   

167.       array (  

168.         'goods_id' => '24',  

169.         'sort_order' => '0',  

170.       ),  

171.       4 =>   

172.       array (  

173.         'goods_id' => '20',  

174.         'sort_order' => '0',  

175.       ),  

176.       5 =>   

177.       array (  

178.         'goods_id' => '8',  

179.         'sort_order' => '0',  

180.       ),  

181.       6 =>   

182.       array (  

183.         'goods_id' => '9',  

184.         'sort_order' => '0',  

185.       ),  

186.       7 =>   

187.       array (  

188.         'goods_id' => '13',  

189.         'sort_order' => '0',  

190.       ),  

191.       8 =>   

192.       array (  

193.         'goods_id' => '10',  

194.         'sort_order' => '0',  

195.       ),  

196.       9 =>   

197.       array (  

198.         'goods_id' => '1',  

199.         'sort_order' => '0',  

200.       ),  

201.       10 =>   

202.       array (  

203.         'goods_id' => '14',  

204.         'sort_order' => '0',  

205.       ),  

206.       11 =>   

207.       array (  

208.         'goods_id' => '17',  

209.         'sort_order' => '0',  

210.       ),  

211.       12 =>   

212.       array (  

213.         'goods_id' => '27',  

214.         'sort_order' => '0',  

215.       ),  

216.       13 =>   

217.       array (  

218.         'goods_id' => '30',  

219.         'sort_order' => '0',  

220.       ),  

221.       14 =>   

222.       array (  

223.         'goods_id' => '25',  

224.         'sort_order' => '0',  

225.       ),  

226.       15 =>   

227.       array (  

228.         'goods_id' => '29',  

229.         'sort_order' => '0',  

230.       ),  

231.       16 =>   

232.       array (  

233.         'goods_id' => '28',  

234.         'sort_order' => '0',  

235.       ),  

236.       17 =>   

237.       array (  

238.         'goods_id' => '26',  

239.         'sort_order' => '0',  

240.       ),  

241.     ),  

242.     'brand' =>   

243.     array (  

244.       33 => 'jk',  

245.       19 => '三星',  

246.       32 => '诺基亚',  

247.       24 => '联想',  

248.       20 => '三星',  

249.       12 => '摩托罗拉',  

250.       22 => '多普达',  

251.       8 => '飞利浦',  

252.       23 => '诺基亚',  

253.       9 => '诺基亚',  

254.       13 => '诺基亚',  

255.       10 => '索爱',  

256.       1 => 'LG',  

257.       14 => '诺基亚',  

258.       17 => '夏新',  

259.       5 => '索爱',  

260.     ),  

261.   );  

262.   ?>  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值