国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman的push插件,建議添加channel反查

lxping2

1、添加能查詢匹配所有channel,場景適用于群發(fā),如訂閱了private-group-uid,可通過查詢group,匹配到所有訂閱者。即:$push->getChannelInfo('-group-', ['info' => 'channels'])

參考代碼添加到711行:

case 'channels': //獲取所有匹配包含的渠道號
$channels = isset($this->_globalData[$app_key]) ? array_keys($this->_globalData[$app_key]) : [];
$channel_info = [];
foreach($channels as $value) {
if (strpos($value, $channel) !== false) { //channel支持前中后包含匹配
$channel_info[] = $value;
}
}
break;

2、添加能查詢某channel下的所有users,場景適用于直播房間用戶列表,如訂閱了presence-live-uid,可查詢其下所有訂閱者信息。即:$push->getChannelInfo('presence-live-uid', ['info' => 'users'])

參考代碼添加到711行:

case 'users':
$channel_info['users'] = $user_count > 0 ? $this->_globalData[$app_key][$channel]['users'] : [];
break;

1831 1 2
1個回答

walkor 打賞

webman/push最好只做通訊,其它的盡量都不做

問題
如果在線連接數(shù)很多,比如上萬在線的話,你加的這2個接口有點耗費性能。
尤其是返回 channel下的所有users,如果channel有1萬個user,返回的數(shù)據(jù)可能達到10M,每秒調(diào)用10次,G口帶寬直接打滿,每秒100MB的數(shù)據(jù)序列化反序列化cpu也炸了。

推薦做法
推薦做法應該是利用webman/push的webhook來接收訂channel增減事件,把所有關注的channel存在存儲里。讀取的時候也應該是部分讀取,貌似沒有什么場景需要一次性讀所有人的數(shù)據(jù)。

1、關于第一個接口說的群發(fā)問題,可以直接讓用戶訂閱某個群id的channel,這樣調(diào)用一次trigger接口就可以群發(fā)了。
2、關于第二個接口,用戶信息最好存mysql等存儲中,從存儲中讀取。直播房間用戶列表也只是展示很小一部分用戶(可能就幾個),沒必要從push中讀所有人的數(shù)據(jù)。

在線人數(shù)少,這2個接口調(diào)用頻率低沒什么問題,在線人數(shù)多的話不建議調(diào)用這2個接口。

  • lxping2 2022-03-25

    謝謝指點,push插件中,webhook有獲取在線user_id的接口:user_added和user_removed。請問下,直接用該webhook接口獲取user_id,channel多了會影響性能嗎?

  • walkor 2022-03-25

    不影響性能

  • lxping2 2022-03-25

    我做的是在線課堂直播,需要知道某個房間的全部在線用戶,但是用戶只訂閱了該房間private-live-1,我想改成訂閱presence-live-1,然后獲取到所有user_id

年代過于久遠,無法發(fā)表回答
??