PHP之 直播開發後端需要做什麼——關於異常退出的補充

上篇《表設計與相關邏輯》裏提到異常退出的處理方案:使用定時任務,用直播間表關聯場次表,去查詢“當天”“直播已結束”“場次結束時間爲空”的直播間ID、場次ID、直播間更改時間,然後,將直播間的更改時間,作爲異常退出沒有結束時間的場次數據的直播結束時間,批量去更改,即可。

這個地方的篩選條件,經驗證,發現有問題,今天特發此文,進行糾正。數據表,還是接上篇《表設計與相關邏輯》裏的表,那麼,上文的問題在哪裏呢?問題就在於,剛開的直播,流因網速等問題,還沒同步到騰訊直播流數據中,此時表裏的狀態還是“暫未直播”,而場次表裏,恰好“場次結束時間”也爲空,因此,就在這1~3秒的時間裏,異常處理的定時任務,就會將還沒來得及同步流到騰訊雲的直播間數據,當成異常數據處理,這就不對了。

那麼,更改後的方案是什麼呢,後來,我仔細觀察,發現,剛開的直播間場次,“創建時間”和“更改時間”這兩個字段的值,是一樣的;此外,因爲我在騰訊雲配置了“斷流消息通知”的回調接口,一旦出現異常退出,肯定會觸發斷流回調,這時,場次表裏的更改時間,就會發生變化,創建時間不會,因此,通過這個特徵,我們就可以匹配到剛開的直播間。

於是,最終的方案,就更改爲:用場次表關聯直播間表,去查詢“當天”“直播已結束”“場次結束時間爲空”的直播間ID、場次ID、直播間更改時間、場次的創建時間、場次的更改時間,獲取結果後,將場次創建時間和更改時間相同的數據,過濾掉,剩下的即是異常退出的數據,最後,將直播間的更改時間,作爲異常退出沒有結束時間的場次數據的直播結束時間,批量去更改,就可以了!

切記,異常退出的定時任務,執行時間不要設置太長,否則,當主播再次開啓直播,你上一個場次的結束時間,就捕捉不到了;而且,場次表上一個異常數據還“未結束”,狀態1,這樣,就會出現髒數據。

導致的後果,就是主播再次直播的場次,可能對應的並非最新的,而是上一條的異常數據,後續的送禮物,場次結束觀看人數、關注人數、打賞禮物等的統計,都會出現問題,甚至,一些意想不到的其他問題!這個問題一定要注意,否則,牽一髮動全身,後面的排錯會耗費你大量的時間。說一下,我這邊設置的是3秒執行一次!僅供參考!




The END!                                                                                     2020/4/17 12:18:18
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章