-
问题背景:
使用 workerman 开发应用时,经常是相当高频有一批开发者在运行脚本时会碰到如下一段熟悉的报警文本:
stream_socket_server(): unable to connect to tcp://ip:port (Address already in use)
问题根本原因:
注意: 既然说的是根本原因,那么我们必须是基于某一个条件成立,...
-
不同的平台机制是有所不同的:
1、对于Linux,有两种方式:
A:通过 fork 子进程继承父进程监听句柄;
B:通过 socket的 SO_REUSEADDR 属性实现端口复用;
2、对于windows,使用的也是 socket的 SO_REUSEADDR【注意windows这个选项默认是激活的】。
Window...
-
问题背景:
1、客户端使用workerman的AsyncTcpConnection发起异步连接;
2、代理层使用nginx进行wss反向代理;
3、服务端使用workerman搭建websocket服务;
问题现象:
客户端使用workerman的AsyncTcpConnection发起异步连接,服务端提示Sec-WebSocket-Accept not...
-
问题主要原因:
1、X.X.X.X所在的服务器的防火墙没有放行1238端口
2、X.X.X.X这个IP和当前客户端请求IP不在同一个内网
3、X.X.X.X这个IP压根儿就不存在,即配置了错误的 $gateway->lanIp
-
问题背景:
基于workerman开发服务过程中发生内存泄漏,首先想说明的是,workerman框架本身非常稳定,不存在内存泄漏。workerman内存回收机制完全遵循PHP原有的GC机制。在workerman里业务代码都是在函数或者类方法里运行的,根据PHP的回收机制,函数或者类方法里临时变量会自动回收,所以开发时基本不用考虑内存回收问题,也不会有内存泄漏,不需要手动unset,但是...
-
解决方案:
【1】text协议:text协议最简单,但只能传递文本数据,不能传递图片等二进制数据。适用于自定义协议传输非二进制数据场景。
【2】websocket协议:websocket协议三者中最复杂。可以传递文本及图片等二进制数据。如果没有现成的websocket类库自行实现协议解析的话会有一些代码开发量。websocket主要用于浏览器和服务端的即时通讯。
【3】fra...
-
解决方案:
1、对于windows而言,目前workerman(php)在最多支持255个连接。
2、对于Linux而言,workerman理论上连接数没有限制,几万、几十万甚至上百万都可以,但前提条件是:
【1】服务器要有足够的内存。
【2】必须安装event扩展。
【3】必须按照官方手册优化Linux内核...
-
问题背景:
消息推送场景:客户端处于离线状态,如何在客户端上线时重新把消息推送过去?
解决方案:
1、首先这个场景需要将消息持久化到数据库。
2、数据表弄个字段用于标识消息是否已读。
3、客户端上线后,服务端判断消息是否已读,如果未读就发给客户端。
4、最后客户端读到消息后通知服务端已读。
-
问题主要原因:
1、服务器压根儿就没有启动;
2、如果是自建服务器,可能是防火墙没有放行对应的IP或端口;
3、如果是云服务器,除了云服务器自带的内层防火墙要放行对应的端口以外,安全组其实也是一种外层防火墙,默认同样也可能会阻止连接,所以需要到管理后台手动放行对应端口;
4、如果客户端使用了域名连接,那么域名可能指向了错误的服务器IP;
5、客户端访问的IP是服务器内网IP,并且客户端和服...
-
问题背景:
composer create-project topthink/think=5.0.* tp5 --prefer-dist
composer require topthink/think-worker
结果半路安装到workerman时报告错误:
Problem 1
- topthink/think-worker v2.0.9 requires topthink...
我就遇到了这个问题,终于找到解决办法...