family_rank.auto_cache.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2016/10/26
  6. * Time: 17:45
  7. */
  8. class family_rank_auto_cache extends auto_cache{
  9. private $key = "family_rank:";
  10. public function load($param)
  11. {
  12. $key_bf = $this->key.'_bf';
  13. $list = $GLOBALS['cache']->get($this->key,true);
  14. if ($list === false) {
  15. $is_ok = $GLOBALS['cache']->set_lock($this->key);
  16. if(!$is_ok){
  17. $list = $GLOBALS['cache']->get($key_bf,true);
  18. }else{
  19. $m_config = load_auto_cache("m_config");//初始化手机端配置
  20. $rank_cache_time = intval($m_config['rank_cache_time'])>0?intval($m_config['rank_cache_time']):300;
  21. //数据处理
  22. $family_day = $this->family_ceil("day");
  23. $family_weeks = $this->family_ceil("weeks");
  24. $family_month = $this->family_ceil("month");
  25. $family_all = $this->family_ceil();
  26. $list= array(
  27. 'day' => $family_day,
  28. 'weeks' => $family_weeks,
  29. 'month' => $family_month,
  30. 'all' => $family_all,
  31. );
  32. //数据处理结束
  33. $GLOBALS['cache']->set($this->key, $list, $rank_cache_time, true);
  34. $GLOBALS['cache']->set($key_bf, $list, 86400, true);//备份
  35. //echo $this->key;
  36. }
  37. }
  38. if ($list == false) $list = array();
  39. return $list;
  40. }
  41. public function family_ceil($type)
  42. {
  43. $where = " 1=1 ";
  44. if ($type == 'day') {
  45. $where = " create_d = day(CURDATE()) ";
  46. }
  47. if ($type == 'weeks') {
  48. $where = " create_w = week(CURDATE()) ";
  49. }
  50. if ($type == 'month') {
  51. $where = " create_m = month(CURDATE()) ";
  52. }
  53. $sql = "SELECT j.id as family_id,j.logo as family_logo,j.name as family_name,j.user_id,j.create_time,j.family_level,(SELECT icon FROM " . DB_PREFIX . "family_level fl where fl.level=j.family_level ) as v_icon,j.user_count FROM " . DB_PREFIX . "family as j where $where and j.status=1 order by j.user_count desc,j.contribution desc,j.video_time desc,j.create_time desc limit 0,10";
  54. $family = $GLOBALS['db']->getAll($sql);
  55. foreach ($family as $k => $v) {
  56. $family[$k]['family_url'] = url("family#info", array("family_id" => $v['family_id']));
  57. $family[$k]['v_icon'] = get_domain().'/public/images/rank/rank_'.$v["family_level"].'.png';
  58. }
  59. return $family;
  60. }
  61. public function rm()
  62. {
  63. $GLOBALS['cache']->clear_by_name($this->key);
  64. }
  65. public function clear_all()
  66. {
  67. $GLOBALS['cache']->clear_by_name($this->key);
  68. }
  69. }
  70. ?>