workerman
首页
问答
分享
手册
市场
商业
AI客服系统源码
聊天系统源码
Webman AI
物联网
赞助商
webman
搜索
+
发布
提问
分享
webman插件
webman应用
登录
注册
问答
webman的控
制
器中如何调用通过自定义
进
程中变量和函
数
自定义
进
程 ```php class Pusher { public function onWorkerStart() { //$GLOBALS['con']; global$con->send($data); }; $con->connect(); } } ``` APP/CONTROLLER 如何调用上面的 $con->send()函
数
问答
一个Gateway下挂载多个Worker项目,怎么配置?
想法是,在Application目录下创建多个项目,其中一个项目(A)用于开启Gateway
进
程,保存客户端连接
数
据
。用户都连接到(A)这个项目上,
发
消息的时候用协议号,通过(A)向其他的项目
发
送
数
据
,其他项目返回
数
据
给(A),(A)再返回给用户。 请教如何配置(A)与其他项目的配置文件?(A)只想部署Gateway
进
程,其他项目只想部署Worker
进
程 所有项目都是基于Gateway/Worker的框架。
文档
关于client_id
* client_id不能自定义,由
GatewayWorker
自动生成。 * 如果client_id对应的客户端连接断开了,那么这个client_id也就失效了。* 除非gateway
进
程退出重启,否则client_id一旦被使用过,将不会被再次使用。也就是说client_id在整个gateway
进
程生命周期内是不会重复的,即使分布式部署也不会重复。* 业务不应该存储client_id到
数
据
库或redis存储上,因为它是临时id,重启
GatewayWorker
后client_id会重新计
数
,导致业务问题。group_id) 等接口将client_id绑定到uid或者gid上,通过Gateway::sendToUid($uid, $data) 或 Gateway::sendToGroup($gid, $data)来
发
送
数
据
问答
【已解决】webman中使用swoole,控
制
器中Request类已经做了协程上下文处理吗
#### 问题描述 **我找到了答案,在协程中使用全局变量确实是会互相干扰,只是我下面的代码是开多个
进
程处理的,恰好两次请求是两个
进
程,所以是两份全局变量。改成只开1个
进
程,就会
发
现协程污染的问题了** - 目前在已有的webman项目中想使用swoole的协程,所以Event-loop切换成了swoole。在控
制
器中的协程环境中,使用全局静态变量,按理说两次请求(两个协程)操作全局变量应该会污染的啊,但是实际上并没有
发
现污染,是webman已经做了上下文处理了么? - 如下图  ``` 按照代码逻辑来看, 第一次请求参
数
a=1时,当前请求的协程A会先修改全局变量为aaa,然后协程挂起5秒; 第
二
次请求参
数
a=2时,当前请求的协程B会直接修改全局变量为bbb,然后返回给客户端 ``` - 问题: ``` 如果在五秒内依次请求上述两个请求,请求1在5秒协程恢复后,应该已经被请求2污染了啊
问答
关于自定义
进
程的问题
# 问题描述 #### 应用场景:学校,同步钉钉
数
据
我有个需求,系统每天定时同步钉钉
数
据
,管理人员也可以手动同步钉钉
数
据
。每个学校同步
数
据
根
据
学校规模耗时大概1-5分钟不等,现有近150所学校需要
进
行
数
据
同步,如果不做异步任务处理,
进
程阻塞,整个业务肯定会受影响,因此,我想是否可以将接收到的这些任务,交给新开的
进
程去做(不影响业务自身的
进
程
数
,即新开的
进
程是在cpu_count() * 2这个
数
量以外的),后端接收到任务后,直接返回任务提交成功的
数
据
。#### 为此你搜索到了哪些方案及不适用的原因 我大致看了下自定义
进
程的内容,不是太明白。请老大指点,具体做哪几步?
问答
【已解决】webman的HTTP
进
程启动后,建立websocket连接会卡很久
## 问题描述 webman的HTTP
进
程,设置为`8`个
进
程提供服务; 在 http
进
程启动后,执行 `onWorkerStart` 方法时,建立与
gatewayWorker
的 `ws`连接。故障现象是:有1-2个
进
程的链接立刻建立成功 `onMessage` 收到信息;而 余下的 **N个
进
程**,要**卡顿很久才**能收到 来自 ws 的 `onMessage` 消息。php namespace app\process; use
GatewayWorker
\Lib\Gateway; use support\Log; use Throwable; use Webmanworker = $worker; \Workerman\Protocols\Http::requestClass(static::$requestClass); // 连接
GatewayWorker
/ 忽略pong if ('pong' === $data) { return; } // 解析
数
据
问答
定
制
udp协议会无效的问题
我需要定
制
一个运行于udp上的协议,尝试按照手册
进
行开
发
,
发
现udp端口完全收不到任何信息。 首先,定
制
一个协议文件,比如ABC。'ABC://0.0.0.0:1234'); // 注意直接udp协议是有效的,使用自定义协议无效 $worker->transport = 'udp'; // 使用UDP网络通讯协议 // 系统定
制
的协议也一样无效
问答
workerman如何保存一个连接用来下次主动
发
送
消息给客户端?
比如服务端连接回调 onConnect ,连接成功后把回调参
数
存起来,方便下次需要
发
送
消息给客户端时直接调用
分享
整理分享Workerman中利用popen实现多
进
程web ssh
### 起源 群友询问如何
进
程异步执行命令行任务,且有通知机
制
,想用来做web ssh,兔子大佬指导可以通过 `popen` 来实现: !== false) { unset($this->processes[$key]); // 从活动
进
程池移除 } } // 获取池中的所有
进
程
数
量($processPool->processCount() >= $processPool->maxProcesses) { return $connection->send('使用
进
程
数
已达最大
数
\Workerman\Worker::$globalEvent->offReadable($process); } else { // 将输出
发
送
给客户端PHP_EOL; } ``` `php start.php start` 启动项目,前端使用 【WebSocket 测试工具】
进
行连接,
发
送
消息执行命令:`/usr/bin/php8.2 command.php
问答
webman + RabbitMQ 消费
数
据
问题
wenbman消费
数
据
,刚开始启动程序, RabbitMQ队列显示消费速率,大约一分钟后,webman显示一直在消费,但是RabbitMQ队列
数
据
量没有减少,不显示得消费者客户端 !
问答
json中怎么加入自己的
数
据
json中怎么加入自己的
数
据
, ws.send('{"type":"say","to_client_id":"'+to_client_id+'","to_client_name":"","contentto_client_id":"'+to_client_id+'","to_client_name":"","content":"'+input.value+'",“number”:"100"}');后,从服务端接受
发
来的消息
问答
接收的问题
,返回0 if($buffer === "\n") { return 0; } // 说明还有请求
数
据
没收到,但是由于不知道还有多少
数
据
没收到,所以只能返回1,因为有可能下一个字符就是\n return 1; } /** * 处理业务,当客户端
数
据
接收完毕后触
发
(这里只是将客户端
发
来的字符串直接会写到客户端suoyoushuju; $fanhui=array(); array_push($suoyoushuju,$bufferss); echo '初始化所有
数
据
> ``` 比方说每次客户端
发
送
字符串给服务端 1234&few 服务端接收后放到$suoyoushuju 然后来遍历$suoyoushuju 是否包含1234 如果有 就添加到$fanhui 这个再
发
回客户端明显没按照我的逻辑么第一次还会运行初始化 第
二
次
发
送
就没有了。。。
问答
请教使用socket做为客户端和北向接口对接,请教如何打包
数
据
发
送
。
5.3.1 消息格式 消息
数
据
由消息头和消息体组成。消息头由9个字节(byte)表示,消息体长度不固定,各类消息不同。消息头的9个字节不能当做字符处理,需要按整型
数
处理。 !
问答
webman+gateway设备
数
据
返回丢失
#### 问题描述 与硬件设备通信,设备登录成功定时批量
发
送
指令,业务逻辑都是推
送
到队列处理,按理不存在处理延时问题,但是总有个别指令
发
送
过去没有收到响应,不知如何定位问题,使用的都是最新版安装包
问答
gateway 除了sendtoall 能够推
送
消息,其他的都不行
```php use \
GatewayWorker
\Lib\Store; use \
GatewayWorker
\Lib\Gateway; class Event { /_ 连接服务 _/function onMessage($client_id, $message) { $b = Gateway::sendToCurrentClient('123456'); // 无法推
送
信息$b = Gateway::sendToClient($client_id,'123456'); // 无法推
送
信息 $c = Gateway::sendToAll('456'); // 可以 推
送
信息 return ; } ``` 是不是有什么地方,需要设置一下
问答
windows下 gateway+tp5 如何使用gateway
进
行消息上传和下
发
windows下 gateway+tp5 如何使用gateway
进
行消息上传和下
发
官方提供的方式是在和MVC框架结合时 使用ajax
进
行消息上传 使用gatewayclent
进
行消息下
发
但是这样总是感觉不够清爽可不可以直接使用gateway上传 通过onmessage对上传的消息
进
行转
发
转
发
的消息通过tp框架
进
行判断处理 处理后的消息再通过gatewayclent下
发
onmessage目前可以实现消息转
发
但是调用的函
数
不能使用tp库的类 无法继承think/controller 应该如何处理 我看好多人都遇到了同样问题 官方有没有解决办法 或者哪位路过的大神指导一下 谢谢
问答
我已经用TP写了个web网站但是需要在这个服务器弄个长连接实时接收
数
据
的接口,然后再给iOS调用,请问怎么做呢?
原先就是搞嵌入式的那个人调用我给他的一个接口传
数
据
到
数
据
库,然后搞app的再调用另一个接口获取这个
数
据
,只是这个
数
据
是不断变化的,所以他们都是不断的用http请求,但是从硬件上传
数
据
过来延迟有两三秒钟,所以现在就希望用socket来保持长连接
发
送
数
据
,本身这个服务器已经用tp做了这个app的后台,现在要怎么结合呢,我只是想给硬件的那个接口是长连接的就行了。
问答
workman倒计时30秒
进
行ws前后端交互,怎么做?
如果是前段
进
行倒计时触
发
,所有在线用户都会
发
送
向后端
发
送
消息,而后端倒计时触
发
则直接推
送
,不需要用户前段
发
送
消息,这个具体怎么做?
问答
数
据
量上300以后经常会出现连接失败的问题
有的时候播间连接
数
达到300人的时候,socket连接就会一直pending... 最后就连接失败~~不能
进
行
数
据
接收。 请问这个问题处在哪里?应该如何解决和避免?
问答
请教workman 4台集群,群
发
漏收问题
我现在有4台workman集群,在一个群聊里
发
消息,群里面会有其他成员漏收的问题,是在不同的workman,推
送
不过去吗?因为
数
据
是有写入DB的
« 上一页
1
...
66
67
68
69
70
71
72
73
...
444
下一页 »
« 上一页
69
下一页 »
赞助商
+成为赞助商
请作者喝咖啡
×
🔝