VideoPrivateRedisService.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Fanwe 方维直播系统
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2011 http://www.fanwe.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Author: 云淡风轻(1956838968@qq.com)
  8. // +----------------------------------------------------------------------
  9. class VideoPrivateRedisService extends BaseRedisService
  10. {
  11. //记录私密直播邀请名单
  12. var $video_private_db;//:video_id hash数据key:user_id; value:1/0 [1:邀请;0:踢除]
  13. //记录用户可以进入的:私密直播
  14. var $user_private_db;//:user_id set数据key:video_id
  15. // var $user_hash_db; //所有会员数据 user_id hash数据 存储在线数据
  16. /**
  17. +----------------------------------------------------------
  18. * 架构函数
  19. +----------------------------------------------------------
  20. * @access public
  21. +----------------------------------------------------------
  22. */
  23. public function __construct()
  24. {
  25. parent::__construct();
  26. $this->video_private_db = $this->prefix.'video_private:';
  27. $this->user_private_db = $this->prefix.'user_private:';
  28. }
  29. /**
  30. * 邀请用户加入私密直播
  31. * @param int $video_id
  32. * @param int $user_id
  33. */
  34. public function push_user($video_id,$user_id){
  35. //:video_id hash数据key:user_id; value:1/0 [1:邀请;0:踢除]
  36. $this->redis->hMSet($this->video_private_db.$video_id,array($user_id=>1));
  37. //记录用户可以进入的:私密直播 权限
  38. $this->redis->sAdd($this->user_private_db.$user_id,$video_id);
  39. }
  40. /**
  41. * 将用户踢出私密直播
  42. * @param int $video_id
  43. * @param int $user_id
  44. */
  45. public function drop_user($video_id,$user_id){
  46. //:video_id hash数据key:user_id; value:1/0 [1:邀请;0:踢除]
  47. $this->redis->hMSet($this->video_private_db.$video_id,array($user_id=>0));
  48. //移除用户可以进入的:私密直播 权限
  49. $this->redis->srem($this->user_private_db.$user_id,$video_id);
  50. }
  51. /**
  52. *
  53. * 检查用户是否被:踢出;踢出后不能重新加入,除非被重新邀请
  54. * @param int $video_id
  55. * @param int $user_id
  56. * @return boolean true被踢出; false未被踢出
  57. */
  58. public function check_user_drop($video_id,$user_id){
  59. //:video_id hash数据key:user_id; value:1/0 [1:邀请;0:踢除]
  60. $status = $this->redis->hGet($this->video_private_db.$video_id,$user_id);
  61. if ($status === false || $status == 1){
  62. return false;
  63. }else{
  64. return true;
  65. }
  66. }
  67. /**
  68. *
  69. * 检查用户是否被:邀请 [未踢除状态]
  70. * @param int $video_id
  71. * @param int $user_id
  72. * @return boolean true被邀请; false未被邀请
  73. */
  74. public function check_user_push($video_id,$user_id){
  75. //:video_id hash数据key:user_id; value:1/0 [1:邀请;0:踢除]
  76. $status = $this->redis->hGet($this->video_private_db.$video_id,$user_id);
  77. if ($status == 1){
  78. return true;
  79. }else{
  80. return false;
  81. }
  82. }
  83. /**
  84. * 获得用户被邀请加入的:私密直播 列表
  85. * @param int $user_id
  86. * @return list
  87. */
  88. public function get_video_list($user_id){
  89. $list = $this->redis->sMembers($this->user_private_db.$user_id);
  90. return $list;
  91. }
  92. /**
  93. * 私密直播结束,清空相关数据
  94. * @param unknown_type $video_id
  95. */
  96. public function drop_video($video_id){
  97. $key = $this->video_private_db.$video_id;
  98. $list = $this->redis->hGetAll($key);
  99. foreach($list as $k=>$v){
  100. //移除用户可以进入的:私密直播 权限
  101. $this->redis->srem($this->user_private_db.$k,$video_id);
  102. }
  103. $this->redis->delete($key);
  104. }
  105. }//类定义结束
  106. ?>