...
|
...
|
@@ -87,16 +87,16 @@ class LivingController extends BaseController |
|
|
->getRawSql()]);
|
|
|
$this->cache->set($key, json_encode($ret), Yii::$app->params['defaultCacheExpire'], $dependency);
|
|
|
}else{
|
|
|
Yii::$app->db->cache(function() use (&$ret){
|
|
|
$_ret = json_decode($ret,true);
|
|
|
$models = RoomNums::find()->indexBy('room_id')->all();
|
|
|
foreach ($_ret as $k=>$row){
|
|
|
if (!empty($models[$row['room_id']]->online_num)){
|
|
|
$row['audience_num'] = (int)$models[$row['room_id']]->online_num;//在线人数
|
|
|
}
|
|
|
$_ret[$k] = $row;
|
|
|
}
|
|
|
}, 60);
|
|
|
$_ret = json_decode($ret,true);
|
|
|
$keys = [];
|
|
|
foreach ($_ret as $k=>$row){
|
|
|
$keys[] = sprintf("%sonline_nums_room_%s",Yii::$app->params['cache_prefix'],$row['room_id']);
|
|
|
}
|
|
|
$values = call_user_func_array(array(Yii::$app->redisIm,'mget'), $keys);
|
|
|
foreach ($values as $k=>$value){
|
|
|
$_ret[$k]['audience_num'] = (int)($value ? : $_ret[$k]['audience_num']);
|
|
|
}
|
|
|
$ret = $_ret;
|
|
|
}
|
|
|
|
|
|
|
...
|
...
|
@@ -170,16 +170,16 @@ class LivingController extends BaseController |
|
|
->getRawSql()]);
|
|
|
$this->cache->set($key, json_encode($ret), Yii::$app->params['defaultCacheExpire'], $dependency);
|
|
|
}else{
|
|
|
Yii::$app->db->cache(function() use (&$ret){
|
|
|
$_ret = json_decode($ret,true);
|
|
|
$models = Video::find()->where(['app'=>$this->app])->indexBy('id')->all();
|
|
|
foreach ($_ret as $k=>$row){
|
|
|
if (!empty($models[$row['video_id']])){
|
|
|
$row['audience_num'] = (int)($models[$row['video_id']]->audience_num+$models[$row['video_id']]->replay_num);
|
|
|
}
|
|
|
$_ret[$k] = $row;
|
|
|
}
|
|
|
}, 60);
|
|
|
$_ret = json_decode($ret,true);
|
|
|
$keys = [];
|
|
|
foreach ($_ret as $k=>$row){
|
|
|
$keys[] = sprintf("%svideo_id_%s_audience_num",Yii::$app->params['cache_prefix'],$row['video_id']);
|
|
|
}
|
|
|
$values = call_user_func_array(array(Yii::$app->redis,'mget'), $keys);
|
|
|
foreach ($values as $k=>$value){
|
|
|
$_ret[$k]['audience_num'] = (int)($value ? : $_ret[$k]['audience_num']);
|
|
|
}
|
|
|
$ret = $_ret;
|
|
|
}
|
|
|
|
|
|
$this->renderJson(Yii::$app->params['success_code'],'',$ret);
|
...
|
...
|
@@ -288,9 +288,6 @@ class LivingController extends BaseController |
|
|
}elseif ($video_id = $this->requests('video_id'))
|
|
|
{//重播视频详情
|
|
|
|
|
|
//观看人数+1
|
|
|
$incr = Video::updateAllCounters(['replay_num' => 1],['id'=>$video_id]);
|
|
|
|
|
|
$key = __CLASS__.__FUNCTION__.'video_id'.$video_id;
|
|
|
if (!$ret = $this->cache->get($key)){
|
|
|
if (!$model = Video::findOne(['id'=>$video_id])){
|
...
|
...
|
@@ -338,19 +335,23 @@ class LivingController extends BaseController |
|
|
->bindValue(':video_id', $video_id)
|
|
|
->getRawSql()]);
|
|
|
$this->cache->set($key, json_encode($ret), Yii::$app->params['defaultCacheExpire'], $dependency);
|
|
|
}else{
|
|
|
$_ret = json_decode($ret,true);
|
|
|
$key = __CLASS__.__FUNCTION__.'video_id'.$video_id.'audience_num';
|
|
|
if (!$audience_num = Yii::$app->redis->get($key)){
|
|
|
$audience_num = (int)$_ret['audience_num'];
|
|
|
Yii::$app->redis->setex($key, Yii::$app->params['defaultCacheExpire']*2, $audience_num);
|
|
|
}
|
|
|
$_ret['audience_num'] = $audience_num;
|
|
|
|
|
|
if ($incr && Yii::$app->redis->incr($key)){
|
|
|
$_ret['audience_num'] += 1;
|
|
|
}
|
|
|
$ret = $_ret;
|
|
|
}
|
|
|
|
|
|
if (is_string($ret)){
|
|
|
$ret = json_decode($ret,true);
|
|
|
}
|
|
|
|
|
|
//缓存回放观看人数
|
|
|
$key = sprintf("%svideo_id_%s_audience_num",Yii::$app->params['cache_prefix'],$video_id);
|
|
|
if (!$audience_num = Yii::$app->redis->get($key)){
|
|
|
$audience_num = (int)$ret['audience_num'];
|
|
|
Yii::$app->redis->setex($key, Yii::$app->params['defaultCacheExpire']*2, $audience_num);
|
|
|
}
|
|
|
$ret['audience_num'] = $audience_num;
|
|
|
|
|
|
//观看回放人数+1
|
|
|
if (Video::updateAllCounters(['replay_num' => 1],['id'=>$video_id]) && Yii::$app->redis->incr($key)){
|
|
|
$ret['audience_num'] += 1;
|
|
|
}
|
|
|
|
|
|
$this->renderJson(Yii::$app->params['success_code'],'',$ret);
|
...
|
...
|
|