workerman
首页
问答
分享
手册
市场
商业
AI客服系统源码
聊天系统源码
Webman AI
物联网
赞助商
webman
搜索
+
发布
提问
分享
webman插件
webman应用
登录
注册
问答
使用webman做短连接, gatewaywork长链接的一些问题
是这样的,本身需求有短连接和长链接 虽然webman可以自定义websocket,但是改了代码就会reload,或者
业
务
频繁变动都会导致链接断开,所以针对长链接还是想用gatewaywork 如果这样配合的话,
业
务
也不想写在gatewaywork,准备gateway只做网关用,在gateway的worker只处理一下最初的鉴权,然后绑定分组 消息的发送全部由webman使用gatewayclient来进行发送,可能的流程会是这样 用户点了某个按钮,发齐http到webman,webman
业
务
代码 第一种:里根据逻辑发送了一个延时队列,然后webman http response用户信息,过了一会,队列执行了,然后队列里面通过gatewayclient给用户发送了一个消息,用户监听的websocket又收到了一条长链接信息 第二种:在
业
务
代码直接调用gatewayclient给另一个用户发了一条推送消息,然后用户收到了自己的webman response 就是这种使用方式,会不会有什么坑 另外确认下 不管是 队列还是自定义进程,还是
业
务
进程 reload都是安全的吧,都是执行完当前请求,退出,而不是立刻结束掉自己对吧,
问答
关于优雅退出的问题及解决方案
#### 如何实现优雅退出呢 由于项目上需要在
业
务
执行完成后才退出,本人的实现方式是在一个叫master的子进程中监听
业
务
进程,在所有
业
务
完成后再退出master的子进程,但由于框架的退出时是不分次序直接退出,导致
业
务
进程还在执行,而master的子进程已经退出,无法完成完整
业
务
本人在做优雅退出时是通过重写stopAII实现,测试发现派生的子类的stopAII并未执行,检查过框架源码理应能正常执行,能否帮忙看看呢
问答
定时器会阻塞吗?
业
务
每次请求都会调用一次定时器,如果下次请求来的时候上次定时器还没有处理完会发生什么? 在手册里看的: 2、添加的定时任
务
在当前进程执行(不会启动新的进程或者线程),如果任
务
很重(特别是涉及到网络IO的任
务
),可能会导致该进程阻塞,暂时无法处理其它
业
务
。所以最好将耗时的任
务
放到单独的进程运行,例如建立一个/多个Worker进程运行
问答
Workerman3.4.2在3.4.0版本上改动了HTTP协议,导致POST请求收不到内容
之前
业
务
是建立在3.4.0版本上,客户端采用POST发送JSON数据,接收正常,现更换为3.4.2版本后,
业
务
代码不变,但打印data数据段,发现content-type为**application/json$GLOBALS = $GLOBALS = $http_body; } } ``` 尝试在default段加入:parse_str($http_body, $_POST);
业
务
正常
问答
实例B向实例A中的客户端推送数据该怎么做效率最高?
目前有这样一个需求 使用的是GatewayWorker 以前定时器是运行在实例A中的,但是随着推送
业
务
量的增加会导致进程阻塞,影响客户端的上行效率,所以现在打算专门再跑一个实例B专门处理下行
业
务
的推送.实例A 所有的客户端连接和上行数据处理 实例B 仅使用定时器处理io阻塞
业
务
, 查询到数据库中有推送需求时向实例A中的指定客户端推送数据. 想问一下要实现以上功能效率最高的方式是什么?
问答
关于内存泄漏,看了关于生命周期的文档,那么我这个问题岂不是很大?
https://www.workerman.net/doc/webman/others/lifecycle.html ## 我这样的写法,是不是有很大的问题,进程重启会不会影响
业
务
提示 webman的所以即使
业
务
代码出现内存泄漏,也不会对
业
务
造成影响。 提示 随着请求增加,webman会载入一些类文件到内存,内存会有一定增长,这种内存增长是正常现象,只要不是内存无限增长就不是内存泄漏。 !
问答
有webman监听redis过期事件的demo么
需要监听redis过期后,处理其他
业
务
。没有找相关信息
问答
【已解决】redis6版本设置了只读账号,webman无法远程登录
#### 问题描述 因为
业
务
需要在默认账号写入数据后,前端需要用只读账号消费数据,在配置里设置了只读账号后
服
务
器上能登录这个账号,但在本地测试远程登录时显示 ```php RedisException
问答
请教一个关于webman/push问题,望大神不吝赐教
目前
业
务
需要,客户端在websocket连接的时候需要带上一段自定义加密串,
服
务
器端会解密,得到id,最后判断相同id,只能同时在线3个,超过3个的,会将之前的连接干掉一个,客户端不再连接,最多连接就3
问答
gatewayworker并发配置
cpu是双核,现在可支持并发量上去了,但是刚刚看文档才发现上面说的是gateway调成cpu核数相等,business调成cpu核数的三倍,瞬间懵了,请问大神这是什么情况,还有就是这个cpu核数是看我
服
务
器的我这边是阻塞式IO
业
务
,含有数据库连接和客户端IO
问答
发生status 139 和 11 的退出
如果
业
务
中有数据库操作,很可能出现busy的情况,是不是只能在开一个
服
务
异步去处理,才能解决这类busy的问题。还是有更好的处理方法,谢谢~~~~
问答
gateway进程cpu跑满,报错
#### 问题描述 两台部署的gatewayworker
服
务
,硬件配置为16核32G,最近半个月经常出现一台机器上的几个gateway进程cpu跑满100%,导致
业
务
无法正常转发。
文档
status命令查看运行状态
* 64000:导致这个退出码的原因是
业
务
代码抛出了异常,但
业
务
没有捕获这个异常,导致进程退出。参见[Worker类构造函数](worker/construct.md) worker_name:该进程运行的
服
务
服
务
名,见[Worker类name属性](worker/name.md) connections注意:如果进程进入短暂的繁忙是正常情况,如果进程一直是繁忙状态,则有可能发生了
业
务
阻塞或者
业
务
死循环的情况,需要根据[调试busy进程](busy-process.md)一节排查。## 注意 status 时可能会发现有些进程显示busy,原因是由于进程忙于处理
业
务
(例如
业
务
逻辑长时间阻塞在curl或者数据库请求上,或者运行大的循环),无法将状态上报,导致显示busy。出现这种问题需要排查
业
务
代码,看哪里导
业
务
致长时间阻塞,并且评估阻塞耗时是否在预期内,如果不符合预期需要根据[调试busy进程](busy-process.md)一节排查
业
务
代码。
问答
http-client 定时任
务
同时多个请求都跑到一个进程里, 导致全部超时【已解决】
#### 问题描述 http-client 定时任
务
同时多个请求都跑到一个进程里, 导致全部超时 这里详细描述问题  #### 原因 线上需要访问速通门
服
务
器,
服
务
器在本地环境 NAT映射出的的端口运营商给屏蔽了 导致无法访问
问答
webman-常驻内存疑惑
只有控制器 和 启动脚本中 载入的文件(比如,process,composer包),才是常驻内存的 我们自己写的
业
务
代码,比如,在某个方法里,直接 new 的,这种都不是常驻内存的吧 因为遵循PHP垃圾回收机制如果仅仅只比较
业
务
代码,是不是跟fpm中,性能差不多的呢?
分享
Nacos在我司的应用及SOA初尝
# 前言 我目前所在的部门主要是负责公司的数据相关的内容,可以理解为数据统计,做的工作其实也比较复杂,除了做一些数据统计分析
业
务
之外,需要做一些基础
服
务
的开发;我部门因为内部开发语言并不统一,在这种情况下A项目是一个任
务
的调度分配
服
务
,可以理解为一个大型的脚本/定时执行器,有点类似与现在比较流行的serverless函数
服
务
,向A项目中添加一个任
务
函数或者执行脚本,他就会在合适的时候被触发;由于硬件
服
务
器并不止有一台/发现
服
务
(Nacos/consul都是优秀的
服
务
注册/发现
服
务
,选用Nacos是一些额外因素,他们各自有优缺点)。# PHP PHP在SOA中扮演了Web
业
务
服
务
的一个角色,主要是进行一些
业
务
接口的输出,但是我们的
服
务
由于需要高承载量,原本计划是使用自研的Reactor模型的NIO框架,但是考虑到减少心智负担,所以选用了文档及社群更完善,因为在一些
业
务
点我们不能有过多时长的错误及
业
务
不通畅,但如果仅仅是将{timer interval}的值缩小至ms,那么又会存在对Nacos
服
务
的过多请求;另外由于我们的
业
务
已经写了有一段时间了,累积了大量的
文档
send buffer to worker fail
Gateway和BusinessWorker启动后会根据`registerAddress`设置的地址(Register
服
务
地址)注册自己, 当start\_gateway.php和start\_businessworker.phpregisterAddress`地址格式为`Register的IP:端口号`, 其中端口号为start\_register.php中的监听端口(假设是1238), 单机部署时,Register
服
务
为本机分布式(集群)部署时,IP为实际Register
服
务
部署的IP(分布式部署时只需要部署一台Register
服
务
即可,假设是192.168.1.100), 则start\_gateway.php和start### 原因二
业
务
设置了business\_worker->onWorkerStart 或者 Events::onWorkerStart 回调,并且回调里有死循环或者长时间阻塞的代码,致使框架无法执行### 原因四
服
务
器启动了多个GatewayWorker,并且多个GatewayWorker使用了相同的端口导致冲突。利用命令 `ps auxf` 查看进程启动情况。
问答
客户端跟
服
务
端建立了tcp连接, 然后 客户端 断网, Gateway::isOnline 判断客户端是否在线, 得出的结果还是在线。 这个有时效性问题吗? 还是跟什么有关系呢
客户端跟
服
务
端建立了tcp连接, 然后 客户端 断网, Gateway::isOnline 判断客户端是否在线, 得出的结果还是在线。 这个有时效性问题吗? 还是跟什么有关系呢
分享
分享一次关于RabbitMQ重复消费的故障
然后无意跳去看一下所有
服
务
总览页面,发现另一个
服
务
有几个error,于是进入详情,发现一直提示“验证码637592发送失败,data not accepted”。###
业
务
逻辑 以上报错来自一个邮件推送
服
务
,利用webman+rabbitmq(采用的workerman/rabbitmq)做的异步消费。更诡异的是,仅仅只有进程onWorkerStop的
业
务
日志和onWorkerStart启动的
业
务
日志,并没有出现workerman调度进程输出的日志(我们都知道在workerman下,假设进程出现异常或者自己但是我们
业
务
逻辑除了onWorkerStop外,自己并不会主动的disconnect,那它是在哪里被调度的呢?所以再次做了一次测试,本地将
业
务
逻辑直接sleep 120s,heartbeat设置为30s,测试果真和线上故障时所有细节一致。
分享
【轻框架Pandaman】优雅的添加定时器
```php #[AsTimer(3, '测试')] public function timersss(): void { //
业
务
逻辑 支持依赖注入 } ```
« 上一页
1
...
52
53
54
55
56
57
58
59
...
222
下一页 »
« 上一页
55
下一页 »
赞助商
+成为赞助商
请作者喝咖啡
×
🔝