video_contribute.auto_cache.php 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. class video_contribute_auto_cache extends auto_cache{
  3. private $key = "video:contribute:";
  4. public function load($param)
  5. {
  6. $user_id = intval($param['user_id']);
  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 .= $user_id . '_' . $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. }elseif(defined('OPEN_LIVE_PAY')&&OPEN_LIVE_PAY==1){
  20. $sql ="select u.id as user_id ,u.nick_name,u.v_icon,u.head_image,u.sex,u.user_level,sum(v.total_ticket) as num
  21. from ".$table." as v LEFT JOIN ".DB_PREFIX."user as u on u.id = v.from_user_id
  22. where v.prop_id<>12 and v.create_ym=".to_date(NOW_TIME,'Ym')." and v.create_d=".to_date(NOW_TIME,'d')."
  23. and v.to_user_id=".$user_id." GROUP BY v.from_user_id
  24. order BY sum(v.total_diamonds) desc limit ".$limit;
  25. $sql_list=$GLOBALS['db']->getAll($sql,true,true);
  26. $pay_history="select u.id as user_id ,u.nick_name,u.v_icon,u.head_image,u.sex,u.user_level,sum(v.total_ticket) as num
  27. from ".DB_PREFIX."live_pay_log_history as v LEFT JOIN ".DB_PREFIX."user as u on u.id = v.from_user_id
  28. where v.create_ym=".to_date(NOW_TIME,'Ym')." and v.create_d=".to_date(NOW_TIME,'d')."
  29. and v.to_user_id=".$user_id." GROUP BY v.from_user_id
  30. order BY sum(v.total_diamonds) desc limit ".$limit;
  31. $history_list=$GLOBALS['db']->getAll($pay_history,true,true);
  32. $list_arr=array_merge($sql_list,$history_list);
  33. foreach($list_arr as $k=>$v){
  34. if(!isset($for_list[$v['user_id']])){
  35. $for_list[$v['user_id']]=$v;
  36. }else{
  37. $for_list[$v['user_id']]['num']+=$v['num'];
  38. }
  39. }
  40. $list=array_values($for_list);
  41. }else{
  42. $sql ="select u.id as user_id ,u.nick_name,u.v_icon,u.head_image,u.sex,u.user_level,sum(v.total_ticket) as num
  43. from ".$table." as v LEFT JOIN ".DB_PREFIX."user as u on u.id = v.from_user_id
  44. where v.prop_id<>12 and v.create_ym=".to_date(NOW_TIME,'Ym')." and v.create_d=".to_date(NOW_TIME,'d')."
  45. and v.to_user_id=".$user_id." GROUP BY v.from_user_id
  46. order BY sum(v.total_diamonds) desc limit ".$limit;
  47. $sql_list=$GLOBALS['db']->getAll($sql,true,true);
  48. $list=$sql_list;
  49. }
  50. $GLOBALS['cache']->set($this->key, $list, $cache_time, true);//缓存时间 1800秒
  51. $GLOBALS['cache']->set($key_bf, $list, 86400, true);//备份
  52. }
  53. if ($list == false) $list = array();
  54. return $list;
  55. }
  56. public function rm()
  57. {
  58. $GLOBALS['cache']->clear_by_name($this->key);
  59. }
  60. public function clear_all()
  61. {
  62. $GLOBALS['cache']->clear_by_name($this->key);
  63. }
  64. }
  65. ?>