如何使用PHP构建一个高性能的弹幕后端服务

技术文章 网站源码 弹幕 弹幕搭建 弹幕后端 dplayer弹幕 dplayer弹幕后端 2020-02-2 阅读:2741

随着WEB2.0的流行,现在很多网站都流行使用“弹幕”这种形式来实现互动。

弹幕(barrage),中文流行词语,原意指用大量或少量火炮提供密集炮击。大量以字幕弹(dàn)出形式显示的评论同时在屏幕上飘过的现象也被称为弹幕。

作为PHPer的我们,看到现在各种网站都有酷炫的弹幕飞过,我们是不是也想给自己的网站加入弹幕功能呢?

首先弹幕的后端其实说白了和公共聊天室的后端原理十分相似,都是一个客户端发送消息给服务端,服务端再将收到的消息广播给其他的客户端。对于后端来说他们几乎没区别,区别就在于前端。

好在我们有一个前端弹幕插件,这个插件是一个jquery插件,github地址:https://github.com/chiruom/jquery.danmu.js,基本上会使用jquery语法,看看示例代码就可以傻瓜化使用。

前端已经有了解决方案,但是后端呢?前端如何与后端通讯?用传统的ajax轮询吗?不行,这样效率太低,想想各大火爆的直播平台都是同一时间几万人在线,几千人同时发弹幕,如果靠ajax轮询一个php接口的话服务器会吃不消的。且弹幕消息存储方案略显复杂,有人问为什么要存储呢?因为ajax使用的HTTP协议是无状态协议,A客户端和B客户端之间对于服务器来说没有任何标志,如果服务器要确保A客户端和B客户端分别在两次请求的时候服务器只返回这两个客户端没有获取过的弹幕消息,那么服务器端就必须使用一个缓存来标识某某客户端看过哪条弹幕消息。综上所述ajax可以实现小规模的弹幕通信方案,但是很麻烦。

好在最新的HTML5中加入了WebSocket协议,我们可以通过WebSocket这种基于HTTP协议之上的即时通信协议来替代ajax这种传统的我问你答的老旧通信模式。而我们是PHPer,对于我们这种只懂PHP的人该如何编写WebSocket服务端呢?好在我们又得知PHP有一个Swoole扩展,我们在PHP语言中使用它可以很方便的构建一个WebSocket服务端。

环境依赖
仅支持Linux,FreeBSD,MacOS,3类操作系统
Linux内核版本2.3.32以上
PHP5.3.10以上版本,包括PHP7

PHP版本依赖

swoole仅支持PHP5.3.10或更高版本,建议使用PHP5.6+
swoole不依赖php的stream、sockets、pcntl、posix、sysvmsg等扩展。PHP只需安装最基本的扩展即可

可以直接看演示

下面是一个朋友整理好的,直接安装使用的,直接放源码

此处内容需要评论回复后方可阅读

直接上传v3

上传完毕导入数据库

然后访问 HTTP(s)://域名/v3/

即可

版权声明

本文基于《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
文章链接:https://pohaier.com/2020/02/02/734.html (转载时请注明本文出处及文章链接)

203条评论

    yeah6868

    谢谢分享了

    Btjson粉丝 Windows10 1 天前回复

    wzl

    我竟然看完了整部电影

    Btjson粉丝 Windows7 5 天前回复

    24021438

    不错,不过不知道怎么整合阿里云player

    Btjson粉丝 Windows10 7 天前回复

    chinady

    666666

    Btjson粉丝 Windows10 7 天前回复

    666

    3333333333333333

    游客 Windows10 12 天前回复

    beiqing

    谢谢

    Btjson粉丝 安卓派 14 天前回复

    w282473511

    谢谢分享了,感谢~!

    Btjson粉丝 Windows10 14 天前回复

    小蒋

    支持支持

    游客 Windows10 17 天前回复

    akeep

    感谢分享。

    游客 Windows10 19 天前回复

    加油

    学习学习

    游客 Windows10 20 天前回复

    大佬菌

    上传完毕导入数据库

    游客 Windows7 20 天前回复

    1235

    kyy

    游客 Windows10 20 天前回复

    hewanquann

    上传完毕导入数据库

    Btjson粉丝 Windows10 21 天前回复

    小白

    一直想搭建一个 感谢分享。

    游客 Ios 21 天前回复

    qq123456

    大家别回复了,什么都没有

    回复可见内容
    0.0 恭喜 什么都没有

    Btjson粉丝 Windows10 21 天前回复

    qq123456

    搭建一个试试

    Btjson粉丝 Windows10 21 天前回复

    c3p0

    来下载试试看

    游客 Windows10 21 天前回复

    g9rt

    来下载试试看

    游客 Ios 22 天前回复

    水水水水水

    游客 Windows10 22 天前回复

    莫泊桑

    游客 Windows10 23 天前回复