rank_contribution.auto_cache.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. class rank_contribution_auto_cache extends auto_cache{
  3. private $key = "rank:contribution:";
  4. public function load($param)
  5. {
  6. $rank_name = strim($param['rank_name']);
  7. $table = strim($param['table']);
  8. $page = intval($param['page']);
  9. $page_size = intval($param['page_size']);
  10. $cache_time = strim($param['cache_time']);
  11. $limit = (($page - 1) * $page_size) . "," . $page_size;
  12. $this->key .= $rank_name . '_' . $page;
  13. $key_bf = $this->key.'_bf';
  14. $list = $GLOBALS['cache']->get($this->key,true);
  15. if ($list === false) {
  16. $is_ok = $GLOBALS['cache']->set_lock($this->key);
  17. if(!$is_ok){
  18. $list = $GLOBALS['cache']->get($key_bf,true);
  19. }else{
  20. if($rank_name=='day'){//day
  21. $sql ="select u.id as user_id ,u.nick_name,u.v_type,u.v_icon,u.head_image,u.sex,u.user_level,sum(v.total_diamonds) as ticket ,u.is_authentication
  22. from ".$table." as v LEFT JOIN ".DB_PREFIX."user as u on u.id = v.from_user_id
  23. where u.is_effect=1 and v.create_ym=".to_date(NOW_TIME,'Ym')." and v.create_d=".to_date(NOW_TIME,'d')." GROUP BY v.from_user_id
  24. order BY sum(v.total_diamonds) desc limit ".$limit;
  25. }elseif($rank_name=='month'){//month
  26. $sql = "select u.id as user_id ,u.nick_name,u.v_type,u.v_icon,u.head_image,u.sex,u.user_level,sum(v.total_diamonds) as ticket ,u.is_authentication
  27. from ".$table." as v LEFT JOIN ".DB_PREFIX."user as u on u.id = v.from_user_id
  28. where u.is_effect=1 and v.create_ym=".to_date(NOW_TIME,'Ym')." GROUP BY v.from_user_id
  29. order BY sum(v.total_diamonds) desc limit ".$limit;
  30. }else{//all
  31. $sql = "select u.id as user_id ,u.nick_name,u.v_type,u.v_icon,u.head_image,u.sex,u.user_level,u.use_diamonds as ticket ,u.is_authentication
  32. from ".DB_PREFIX."user as u where u.is_effect=1 and u.use_diamonds>0
  33. order BY u.use_diamonds desc limit ".$limit;
  34. }
  35. $list=$GLOBALS['db']->getAll($sql,true,true);
  36. if($rank_name=='day'){
  37. $GLOBALS['cache']->set($this->key, $list, $cache_time, true);//缓存时间 1800秒
  38. $GLOBALS['cache']->set($key_bf, $list, 86400, true);//备份
  39. }elseif($rank_name=='month'){
  40. $GLOBALS['cache']->set($this->key, $list, $cache_time, true);//缓存时间 28800秒 8h
  41. $GLOBALS['cache']->set($key_bf, $list, 86400, true);//备份
  42. }else{
  43. $GLOBALS['cache']->set($this->key, $list, $cache_time, true);//缓存时间 86400秒 24h
  44. $GLOBALS['cache']->set($key_bf, $list, 86400, true);//备份
  45. }
  46. }
  47. }
  48. if ($list == false) $list = array();
  49. return $list;
  50. }
  51. public function rm()
  52. {
  53. $GLOBALS['cache']->clear_by_name($this->key);
  54. }
  55. public function clear_all()
  56. {
  57. $GLOBALS['cache']->clear_by_name($this->key);
  58. }
  59. }
  60. ?>