nginx + php + mysql直播管理-房间管理

背景

前一篇文章中已经完成了权限的鉴定,让没有权限的用户不能进行推流,这样达到了非法用户滥用推流资源的效果,也可以设置对应的黑名单,让黑名单的用户不能进行推流;现在需要对直播房间进行管理。

房间管理

  • 在数据库创建对应直播房间的表,roomcheckcode存放的是验证码,用于验证用户是否有权限进行推流;roomstatus表示房间是否开始直播;


    直播房间表
  • 当用户进行推流的时候会走Nginx推流的通知,在那个通知里面进行数据库的更新,让roomstatus更新为1;当用户推流结束的时候走推流结束通知,更新数据库把roomstatus更新为0,这样就能够很准确的了解到当前直播房间的状态。
  • 当用户使用VLC进行rtmp播放地址播放的时候,就会走Nginx的播放通知,这样数据的roomCount就会+1,当用户完成播放的时候,就会走播放完成通知,数据库roomCount就会-1,这样就能比较准确的统计到当前房间的人数。
  • 根据updatetime和roomstatus进行定时清理空闲房间。
    <?php
    define('CLEARTIME',(60 * 10));//十分钟清理一次

    require_once ('../common/DBConnection.php');

    $sql = 'select * from live_room_t order by updatetime asc';

    $con = DBConnection::getConnect();

    $result = $con -> query($sql);

    while($row = mysqli_fetch_array($result)) {
        $updatetime = strtotime($row['updatetime']);
        $status = (int)$row['roomstatus'];
        $timeout = time() - $updatetime > CLEARTIME ? true : false;
        if ($timeout && $status == 0){
            deleteroom($row['roomid'],$con);
        }
    }
    //删除房间
    function deleteroom(string $roomId,$con){
        $sql = "delete from live_room_t where roomid = '%s'";
        $sql = sprintf($sql,$roomId);
        $con -> query($sql);
    }

    $con->close();

    echo "清理完成...";
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,523评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,252评论 4 61
  • “我是最爱你的!但我要经检验过一百个女人之后,然后疲惫残伤,憔悴的像一株从病室里搬出来的杨柳,永远倒在你的怀中!”...
    张玉晶阅读 663评论 11 15
  • 下午三点半 八月的太阳烤着大地,热岛效应将整座城市变成了沸腾的大蒸笼。 王焱有气无力地蹬着三轮车,一滴滴汗珠顺着脸...
    皮卡章鱼阅读 591评论 0 3
  • 随着互联网资本寒冬的到来,ui设计师岗位需求发生变化,已经不是画几个图标做几个超写实就能高薪的时期了,gui...
    A蜡笔阅读 334评论 0 2