cache.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <?php
  2. /**
  3. * 清理缓存
  4. ***/
  5. defined('InShopNC') or exit('Access Invalid!');
  6. class cacheControl extends SystemControl
  7. {
  8. protected $cacheItems = array(
  9. 'setting', // 基本缓存
  10. 'seo', // SEO缓存
  11. 'groupbuy_price', // 抢购价格区间
  12. 'nav', // 底部导航缓存
  13. 'express', // 快递公司
  14. 'store_class', // 店铺分类
  15. 'store_grade', // 店铺等级
  16. 'store_msg_tpl', // 店铺消息
  17. 'member_msg_tpl', // 用户消息
  18. 'consult_type', // 咨询类型
  19. 'circle_level', // 圈子成员等级
  20. 'area', // 省市区地址
  21. 'home_goods', // 手机首页商品缓存
  22. 'android_version', // Andrid手机版本信息缓存
  23. );
  24. //'bonus', // 手机红包相关缓存
  25. //'specials', // 手机专题活动相关缓存
  26. //'discovery', // 手机发现页相关缓存
  27. // salelist //手机促销相关数据
  28. protected $cacher = '';
  29. public function __construct()
  30. {
  31. parent::__construct();
  32. Language::read('cache');
  33. $this->cacher = Cache::getInstance('cacheredis');
  34. }
  35. /**
  36. * 清理缓存
  37. */
  38. public function clearOp()
  39. {
  40. if (!chksubmit()) {
  41. Tpl::showpage('cache.clear');
  42. return;
  43. }
  44. $lang = Language::getLangContent();
  45. // 清理所有缓存
  46. if ($_POST['cls_full'] == 1)
  47. {
  48. foreach ($this->cacheItems as $i) {
  49. dkcache($i);
  50. }
  51. //area
  52. dkcache('area_toplevelareas'); // 省级别缓存处理
  53. dkcache('area_cityprovince'); // 市级别缓存处理
  54. // 表主键
  55. Model::dropTablePkArrayCache();
  56. // 商品分类
  57. dkcache('gc_class');
  58. dkcache('all_categories');
  59. dkcache('goods_class_seo');
  60. dkcache('class_tag');
  61. // 广告
  62. Model('adv')->makeApAllCache();
  63. // 首页
  64. Model('web_config')->getWebHtml('index', 1);
  65. delCacheFile('index');
  66. // 删除商品相关数据
  67. $this->del_keys('goods*');
  68. // 删除手机红包相关缓存
  69. $this->del_keys('bonus*');
  70. //删除手机专题活动相关缓存
  71. $this->del_keys('mb_special*');
  72. //删除手机发现页相关缓存
  73. $this->del_keys('discovery*');
  74. //删除手机促销相关数据
  75. $this->del_keys('mb_salelist*');
  76. }
  77. else
  78. {
  79. $todo = (array) $_POST['cache'];
  80. foreach ($this->cacheItems as $i) {
  81. if (in_array($i, $todo)) {
  82. dkcache($i);
  83. }
  84. }
  85. // 表主键
  86. if (in_array('table', $todo)) {
  87. Model::dropTablePkArrayCache();
  88. }
  89. // 商品分类
  90. if (in_array('goodsclass', $todo)) {
  91. dkcache('gc_class');
  92. dkcache('all_categories');
  93. dkcache('goods_class_seo');
  94. dkcache('class_tag');
  95. }
  96. // 广告
  97. if (in_array('adv', $todo)) {
  98. Model('adv')->makeApAllCache();
  99. }
  100. // 首页
  101. if (in_array('index', $todo)) {
  102. Model('web_config')->getWebHtml('index', 1);
  103. delCacheFile('index');
  104. }
  105. // 省市区地址
  106. if (in_array('area', $todo)) {
  107. dkcache('area');
  108. dkcache('area_toplevelareas'); // 省级别缓存处理
  109. dkcache('area_cityprovince'); // 市级别缓存处理
  110. }
  111. // 删除商品相关数据
  112. if (in_array('goods',$todo)) {
  113. $this->del_keys('goods*');
  114. }
  115. // 删除手机红包相关缓存
  116. if (in_array('bonus',$todo)) {
  117. $this->del_keys('bonus*');
  118. }
  119. // 删除手机专题活动相关缓存
  120. if (in_array('specials',$todo)) {
  121. $this->del_keys('mb_special*');
  122. $this->inc_version("index_tab_version");
  123. dkcache('web_code_123');
  124. }
  125. // 删除手机发现页相关缓存
  126. if (in_array('discovery',$todo)) {
  127. $this->del_keys('discovery*');
  128. }
  129. // 删除手机促销相关数据
  130. if (in_array('salelist',$todo)) {
  131. $this->del_keys('mb_salelist*');
  132. $this->del_keys('mb_brand');
  133. $this->del_keys('mb_brandex');
  134. }
  135. }
  136. $this->log(L('cache_cls_operate'));
  137. showMessage($lang['cache_cls_ok']);
  138. }
  139. private function inc_version($name)
  140. {
  141. $version = rkcache($name);
  142. if(empty($version)) {
  143. $version = 1;
  144. } else {
  145. $version = intval($version) + 1;
  146. }
  147. wkcache($name, $version);
  148. }
  149. /**
  150. * 删除通配的keys
  151. * @param $key
  152. * @return bool
  153. */
  154. protected function del_keys($key)
  155. {
  156. $keys = $this->cacher->keys($key);
  157. if(!empty($keys) && is_array($keys)){
  158. foreach($keys as $key) {
  159. $this->cacher->del($key);
  160. }
  161. }
  162. return true;
  163. }
  164. }