PHP workerman社交聊天

你也可以选择用PHPSocket.IO+redis来实现

之前集成腾讯得API有些信息不好定制所以换这个了。

集成workerman/thinkphp5 GatewayWorker 官方手册如下

工作原理

1、Register、Gateway、BusinessWorker进程启动

2、Gateway、BusinessWorker进程启动后向Register服务进程发起长连接注册自己

3、Register服务收到Gateway的注册后,把所有Gateway的通讯地址保存在内存中

4、Register服务收到BusinessWorker的注册后,把内存中所有的Gateway的通讯地址发给BusinessWorker

5、BusinessWorker进程得到所有的Gateway内部通讯地址后尝试连接Gateway

6、如果运行过程中有新的Gateway服务注册到Register(一般是分布式部署加机器),则将新的Gateway内部通讯地址列表将广播给所有BusinessWorker,BusinessWorker收到后建立连接

7、如果有Gateway下线,则Register服务会收到通知,会将对应的内部通讯地址删除,然后广播新的内部通讯地址列表给所有BusinessWorker,BusinessWorker不再连接下线的Gateway

8、至此Gateway与BusinessWorker通过Register已经建立起长连接

9、客户端的事件及数据全部由Gateway转发给BusinessWorker处理,BusinessWorker默认调用Events.php中的onConnect onMessage onClose处理业务逻辑。

10、BusinessWorker的业务逻辑入口全部在Events.php中,包括onWorkerStart进程启动事件(进程事件)、onConnect连接事件(客户端事件)、onMessage消息事件(客户端事件)、onClose连接关闭事件(客户端事件)、onWorkerStop进程退出事件(进程事件)

[http://www.workerman.net/gatewaydoc/preface/README.html](http://)

安装根据官方教程
[http://doc3.workerman.net/install/install.html](http://)

注意

1、服务端启动成功,但是无法通讯,请检查服务器防火墙。(阿里云有安全策略问题)

2、客户端只能连接Gateway端口,不要连接Register端口。

3、客户端与服务端要能保持正常通讯,需要保证客户端与服务端的通讯协议是一致的。比如服务端是websocket协议,客户端也要使用websocket协议才能通讯,否则无法通讯。

4、长连接应用切记需要开启应用层心跳(GatewayWorker提供了设置,参加心跳检测),心跳间隔20-30秒最佳,为了避免长连接因为长时间不通讯被节点防火墙断开。

5、如果业务并发连接数超过1000同时在线,请务必优化linux内核,并安装event扩展或者libevent扩展

启动

以debug(调试)方式启动

php start.php start

以daemon(守护进程)方式启动

php start.php start -d

停止

php start.php stop

重启

php start.php restart

平滑重启

php start.php reload

查看状态

php start.php status

安装完成后启动成功如下

查看进程状态

thinkphp5中集成进来得文件差不多这些。

消息推送主要是在 Events.php 文件中修改处理(操作信息规则与入库[http://doc3.workerman.net/component/workerman-mysql.html])

简单数据表这块部分

群数据表

单聊关系表

单聊数据表

成品效果图实时部分

PS:

开启多少进程

Gateway进程使用的非阻塞式IO通讯,属于CPU密集型业务,Gateway进程数设置成与CPU核数相性能最好。即start_gateway.php$gateway->count= cpu核数;

BusinessWorker进程中根据业务是否有阻塞式IO设置进程数为CPU核数的1倍-3倍即可。 即start_businessworker.php$worker->count = cpu核数的1-3倍;

使用MYSQL

直接安装扩展,进程启动后初始化数据库连接

心跳检查

这个在配置启动可以配置检查时间,时间配置短一点,不然可能掉线收不到消息

转载于:https://my.oschina.net/sorenring/blog/1809752

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值