workerman
首页
问答
分享
手册
市场
商业
AI客服系统源码
聊天系统源码
Webman AI
物联网
赞助商
webman
搜索
+
发布
提问
分享
webman插件
webman应用
登录
注册
问答
GatewayWorker
如何重启指定
进
程
#### 问题描述
GatewayWorker
如何重启指定
进
程 ,比如只重启 Worker
进
程 #### 为此你搜索到了哪些方案及不适用的原因 php start.php restart是全部
进
程重启
问答
gatewayworker
设置的worker
数
量太多,导致require_once文件失败
一个基于
gatewayworker
框架的服务器程序,我设置了5个gate, 10个worker,然后一个含5个worker的客户端,每个worker
发
起1000个连接到服务器,
发
现服务器报require_once这个相当于多
进
程同时require_once 某个共享文件造成的,这个有办法解决吗,谁叫php是解释型语言呢,在用到的时候才会require
进
来!可是就是这么巧,
进
程
数
多了点就这样了!
问答
客户端连接gateway得到client_id=01成功后端循环
发
消息,此时前端页面刷新换了client_id=02,后端的消息会将给01的消息也
发
给02,这是为何?
目前有个PHP项目,thinkPHP5.1框架,使用gateway库,客户端连接socket成功后client_id为01,服务端开启一个大循环(总耗时
数
分钟)给该客户端01
发
消息,消息未
发
送
结束客户端刷新了页面,client_id变成了02,但是原先
发
给01的
数
据
会叠加
发
到02上,导致02同时接收到了两条消息。请指点一
二
,谢谢。 @walkor
问答
怎样把接收的
数
据
显示到前台?并且在前台
发
送
对应
数
据
给特定的设备?
注册上之后会去连接服务器,服务端开了一个socket,走的是http协议,$webserver = new WebServer('http://0.0.0.0:8080'); 这些设备连上之后,需要人工操作在前端
发
送
一些指令给设备
文档
sendToAll
如果指定的$client_id_array中的client_id不存在则自动丢弃 ## 参
数
* ```$send_data``` 要
发
送
的
数
据
(字符串类型),此
数
据
会被Gateway所使用协议的encode方法打包后
发
送
给客户端 * ```$client_id_array``` 指定向哪些client_id
发
送
,如果不传递该参
数
,则是向所有在线客户端
发
送
```$send_data``````$exclude_client_id```
数
组中指定的client_id将被排除在外,不会收到本次
发
的消息 * ```$raw``` 是否
发
送
原始
数
据
,也就是绕过gateway协议打包过程,gateway对
数
据
不再做任何处理,直接
发
给客户端。### 返回值 因为
数
据
发
送
是异步
进
行的,所以没有返回值。一般来说只要客户端在线就可以
发
送
成功。
问答
浏览器给智能硬件
发
信息 通过bindUID
在做一个智能硬件的服务器,
GatewayWorker
相当于一个转
发
平台。浏览器走websocket,智能硬件走tcp。我现在的做法是在网页端那边的建立了
数
据
库,记录了浏览器uid和硬件的绑定关系,每次浏览器
发
送
每条命令都要查询
数
据
库对应的硬件uid是什么,组合成{"type":"send","web_uid":"web","device_uid":"mac","contant":"hello"},在,Gateway中提取出硬件uid再通过sendToUid
发
送
给硬件; 同样硬件
发
送
给浏览器也需要带上自己uid和浏览器请问Gateway有木有更为简便的方法,可以让浏览器过来的Message,自动记得他需要
发
送
给的硬件uid?
问答
为什么workerman中http请求过来的
数
据
,后台打印大多
数
情况接收不到
#### 问题描述 这里写描述 你好,问一下为什么http请求过来的
数
据
,我后台打印大多
数
没有,偶尔能打印2次
发
送
过来的
数
据
,websocket请求
数
据
是正常的,就是http请求有问题,域名解析都是正常的
问答
感觉
进
程
数
设置没效果啊?新人正在入门
php5.6 扩展都有 设置了10个
进
程
数
故意sleep 10秒,然而第
二
次请求是阻塞的 要等10秒才有响应
问答
workman 如何接收连续的tcp
数
据
流 然后得到一个完整的
数
据
流
workman 如何接收连续的tcp
数
据
流 ,然后得到一个完整的
数
据
流 。比如tcp
发
过来的
数
据
fafb010100000017 然后又
发
的 00003836393530333033333 最后得到 fafb01010000001700003836393530333033333一个完整的
数
据
流呢
问答
Gatewayworker
开
发
的网页聊天如何
发
送
地图定位?
有一个项目,开
发
了即时聊天的,是在微信中
发
起即时聊天的,里面有一个功能就是用户可以
发
送
自己的定位给对方,那么怎么样才能让对方接收得到这个定位呢?这个定位在后台怎么保存这个定位信息呢?
问答
Webman中, 分页时,表中字段值过大,排序出错
```php date("ymdhis"); ``` 在表中排序字段类型为bigint, 使用上面date函
数
去更新值,比如更新某一条的sort为220829043719 今天
发
现
数
据
出错, 表现为 1正常输出 2.
进
行分页时,会出现
数
据
错乱. 同一条记录会在第一页,第
二
页中出现2次, 有的记录在所有分页中都不会出现 想了解一下这是什么原因?是
数
字超过了哪里的处理最大限
制
吗
文档
支持哪些协议
# Workerman支持哪些协议 Workerman在接口上支持各种协议,只要符合```ConnectionInterface```接口即可(参见定
制
通讯协议章节)。为了方便开
发
者,Workerman提供了HTTP协议、WebSocket协议以及非常简单的Text文本协议、可用于
二
进
制
传输的frame协议。开
发
者可以直接使用这些协议,不必再
二
次开
发
。如果这些协议都不满足需要,开
发
者可以参照定
制
协议章节实现自己的协议。 开
发
者也可以直接基于tcp或者udp协议。0.0.0.0:1222'); // text文本协议(telnet协议) $worker3 = new Worker('text://0.0.0.0:1223'); // frame文本协议(可用于
二
进
制
数
传输
问答
gatewayworker
可以做为 socket cliednt 向指定服务器端口
发
送
吗?
在收到socket client消息的时候,想把
数
据
发
给指定服务器端口,比如 tcp://127.0.0.1:8888 。这个时候,服务器如何创建一个 socket client 去实现这个功能?
问答
如何使用多
进
程并行组合处理一个业务?
我现在使用webman提供一个http接口,该功能需要实现以下: ``` 去ES的A索引中查询
数
据
去
数
据
库中查询 去ES的B索引中查询
数
据
``` 以上三步IO没有次序,我想可以用多
进
程的思路来提高并
发
量如果是在其他php-cli环境下,我可以fork三个子
进
程,然后阻塞父
进
程等待三个子
进
程的返回,得到三个子
进
程的返回后,父
进
程统一组装
数
据
响应给调用方。 但是在webman中如何实现呢?我看文档中有说明可以创建带监听的task
进
程,然后控
制
器中使用异步TCP客户端的方式去投递任务,然后在异步TCP客户端的回调中获取返回结果,但是这种情况下我在控
制
器这个主
进
程怎么阻塞等待三个任务的返回啊
问答
关于gateway里的worker多
进
程的疑惑的问题
大致都浏览了好几次文档了,有几个疑惑: 看了文档里实例里worker的count都是设置成4,问题来了,那么一个多websocket客户端连接到服务器肯定是会按一定规律分配给不同的worker,多
进
程间
数
据
是无法共享的,那么广播群
发
,workerman怎么处理的,利用了什么机
制
,内存
数
据
共享机
制
吗?我看了下大致的源码,找到一个gateway类里有一个_clientConnections,不明白这个是怎么共享的,而且gateway也是有count设置成4个
进
程的,不解
问答
GatewayWorker
中Timer问题
我建立了4个worker
进
程,在设备连接后,会开启一个20秒的任务。因为设备信号的问题,有时设备会断开后又重连,这时候会与服务器建立新的连接。这个时根
据
设备端
发
送
的心跳信息判断的,正常在20秒任务中,我会与设备通讯一次。因此设备是不会
发
送
心跳信号的,如果60秒设备与服务器之前没有通讯就会
发
送
心跳。因此服务端接收到心跳时,我只有重新开始一个20秒任务,来解决这个Timer失效的问题; 2:在onclose 删除定时器时,有时候觉得好像没有删除掉,因为对于的逻辑还在运行,还在向
数
据
库写
数
据
。是否时因为开启了多个
进
程的原因,执行删除定时器所在
进
程和创建定时器所在
进
程不一致,因此通过Timer.del(?),这个?对于的定时器不存在呢?3:我如何知道到底当前不同的worker
进
程中有哪些定时器任务在执行呢? 请指点下,谢谢!
问答
【反馈】router中,如果
数
据
处理失败,希望终止后续路由,希望返回bool false ,则会导致
进
程重启
比如官网的http://chat.workerman.net/, 如果你的名字选择为 \h\,即带有特殊字符 \ " 等,会导致后台
进
程报错并重启,是否存在攻击风险,使得
进
程反复重启,并且
进
程中的变量
数
据
将会丢失补充下,仅供官方参考 如果传输的是gzip压缩,又需要根
据
用户
发
来的消息选择路由,则router函
数
中,如果根
据
buffer解压缩失败,或者处理失败,希望终止请求,而不是继续返回一个worker,从而导致后续
进
程的重启。 对于这种需求,请问是否有更好的方法来处理用户
发
来的
数
据
而选择不同的路由,并且对于非法的用户
数
据
,因为不能指定到业务逻辑相关的路由,就需要终止掉该请求,而不导致
进
程重启,谢谢
问答
workerman-chat 如何撤销(删除)已
发
送
的信息?
一人
发
出的消息(同时信息已
进
入
数
据
库),假设管理员想删除此记录,其他所有在线的客户端如何在不刷新的情况下剔除掉此条消息?
问答
一台服务器搭建多个项目配独立的gatewaywork,只有一个bindUid生效,另外的都不生效
#### 问题描述 这里写问题描述 一台服务器上部署了多个
gatewayworker
,端口都换了 但是服务启动后,bindUid方法只有一个才生效,其他的几个服务都没有生效,导致sendToUid其他几个服务都没
发
送
成功,只能通过sendToClient
发
送
到对应的client_id 项目一配置:  项目
二
配置: !upload/img/20240909/0966dead9b7174.png) Gateway::sendToUid('cr_15','dsada') 随便写的sendtouid方法,只能项目一才能生效,项目
二
无法
进
行
问答
workerman Client::publish
发
布事件没有执行回调函
数
Worker('websocket://0.0.0.0:8866');// 实例化 Websocket 服务 $this->worker->count = 10;// 设置
进
程
数
$event]; } } // Run worker Worker::runAll(); } 在 worker
进
程onWorkerStart 事件中注册事件 send_to_uid 代码如下: /** * 每个
进
程启动 * @param $worker */ public"; echo "\n\r"; echo "
发
送
数
据
"; echo "\n\r"; var_dump($event_data"; } 但是并没有执行注册事件时的回调函
数
。
« 上一页
1
...
35
36
37
38
39
40
41
42
...
447
下一页 »
« 上一页
38
下一页 »
赞助商
+成为赞助商
请作者喝咖啡
×
🔝