workerman
首页
问答
分享
手册
市场
商业
AI客服系统源码
聊天系统源码
Webman AI
物联网
赞助商
webman
搜索
+
发布
提问
分享
webman插件
webman应用
登录
注册
问答
向不存在的表写入
数
据
应该提示错误,确没有提示
#### 问题描述 这里详细描述问题 向一个不存在的表test2,插入
数
据
,却不提示错误,启动命令行也没有想关错误 #### 程序代码 public function view(Request $Edition) workerman/workerman ^5.1 || dev-master webman: versions : * v2.1.1 启用了协程,协程用的swoole 5.1.5版本 ,另外控
制
器复用也启用了的
问答
onWorkerStart中类的变量会混淆么
SetTradeStatus.php'; use Workerman\Worker; use Workerman\Lib\Timer; use think\DB; $task = new Worker(); // 开启多少个
进
程运行定时任务,注意业务是否在多
进
程有并
发
问题 $task->count = 1; $task->onWorkerStart = function() { $SetTradeStatus = new$this->trade_data = $trade_data; // 设置订单状态 $this->set_trade_status(); //
发
送
设备通知name('msg')->data($data)->insert(); } } ``` ------------ 类文件中, $this->trade_data 会被混淆么, 在执行ID为1的
数
据
的时候,trade_data 为1:;这个trade_data 会被下一次执行的
数
据
覆盖么
问答
如何在onMessage下的定时器中用$connection->send
发
送
前台传来的
数
据
?
问答
队列中使用redis 出现错误
#### 问题描述 目前需求是 第三方接口有请求限
制
接口请求频率限
制
:200次/秒。 消息条
数
限
制
:12000条/分钟。按接收消息
数
量计算条
数
,若一次
发
送
给500个用户,计作500条。每次最多500用户 目前使用方案是动态双维度限流方案, 当投递
数
据
交小时 是不会出现错误的,较大就会 目前是4个
进
程 初步怀疑是不是一直投递,然后队列消费不满足规则后,又投递,导致redis响应体过大超出缓存区导致的dynamic_limit -- 动态限
制
值 } end -- ===== 通过检查,更新
数
据
===== -- 更新当前分片 local current_win_key= 1) { $this->sendToTencentIM($users, $data['message']); $logs .= "[INFO]\t
发
送
成功PHP_EOL; if ($attempts == 5) { $logs .= "[ERROR]\t
发
送
失败, 超过最大重试次
数
,不在重试" .
文档
onConnect
# onConnect ## 说明: ```php callback Worker::$onConnect ``` 当客户端与Workerman建立连接时(TCP三次握手完成后)触
发
的回调函
数
。注意:onConnect事件仅仅代表客户端与Workerman完成了TCP三次握手,这时客户端还没有
发
来任何
数
据
,此时除了通过```$connection->getRemoteIp()```获得对方ip,没有其他可以鉴别客户端的
数
据
或者信息,所以在onConnect事件里无法确认对方是谁。要想知道对方是谁,需要客户端
发
送
鉴权
数
据
,例如某个token或者用户名密码之类,在[onMessage回调](on-message.md)里做鉴权。## 回调函
数
的参
数
``` $connection ``` 连接对象,即[TcpConnection实例](../tcp-connection.md),用于操作客户端连接,如[
发
送
数
据
](..
问答
异常捕获和记录
我在守护
进
程下运行。try 了回调方法,但是
发
现回调里报了致命的错误但是没有捕获,我在stdoutFile 设置的文件里也没有看到错误。比如缺少扩展之类的。
进
程直接退出了。class, $method), $param_array);//回调里有报错但是没有catch住也就没有上报到日志系统里 } catch (Exception $e) { //
发
送
数
据
给客户端,
发
生异常,调用失败 $code = $e->getCode() ?
问答
webman的控
制
器逻辑更新后,调用时却仍然执行旧逻辑
如题,在使用webman 1.3.9时,修改了控
制
器中的代码,在终端上也看到了: ``` xxx.php update and reload Workerman[start.php] reloading``` 此时再调用控
制
器时,
发
现修改没有生效。控
制
器执行的仍旧是修改前的逻辑。 在提交这个提问的过程中,又尝试了一次调用,
发
现执行的是修改后的逻辑,是因为webman缓存了代码文件么?如果是,怎样实现实时修改,立马生效呢?
问答
GatewayWorker
客户端如何调用服务端的方法
客户端调用服务端的登录方法获取登录结果,前端是javascirpt,后端是
GatewayWorker
例如后端有个login的方法,前台js如何请求login方法并根
据
返回的结果做相应的处理?
问答
开
发
基础插件,如何实现助手函
数
#### 问题描述 开
发
基础插件,如何实现助手函
数
,可以在项目内直接使用插件的方法
问答
webman 文件监控
GatewayWorker
#### 问题描述 webman 使用
GatewayWorker
的时候 文件监控 监控不到
GatewayWorker
的文件,改哪里可以监控它
问答
GatewayWorker
的Events.php中调用Worker::runAll()出现异常
```php public static function onWorkerStart() { $task = new Worker(); // 开启多少个
进
程运行定时任务,注意业务是否在多
进
程有并
发
问题 $task->count = 1; $task->onWorkerStart = function ($task) {} ``` 我在测试定时器,但是用worker运行就会出现这个问题,而直接使用Timer则正常 感觉在这里不应该再Worker::runAll();了,但定时器无法启动,请赐教,非常感谢 环境:
GatewayWorker
问答
gateway worker没有根
据
client_id或uid查寻已加入哪些群组的方法吗?
#### 问题描述 问题1: gateway worker当群组一成员因网络问题掉线了以后(非正常退出),能否根
据
该成员重新登录的client_id或uid查询已经加入的群组id(文档没找到相关接口)问题2: 用户在一个群组房间里面
进
行游戏,怎么判断对方是否一直在线或掉线或已经退出房间,不知道这个方案是否可行(或者有没有更佳的方案):创建一个房间后,每个成员都要
发
送
心跳包到房间,然后服务器在群
发
消息里面返回各个成员的在线状态
问答
关于$router路由函
数
gateway在给worker
发
送
消息的时候,不是可以使用路由函
数
$router么,所以我想能不能,用$router使不同的client绑定不同的worker,如果在$router新建worker,是不是只要还有就是,可能需要查看worker的信息,gateway里面有没有保存worker的信息,能不能访问,我看gateway里面保存的worker的connection
数
组是protected的。
问答
觉得workerman开
发
Html5的websocket游戏很方便,求服务器架构思路
官方提供的聊天室示例感觉挺不错的,但是我做一个地图跑图类的游戏,
发
现这个玩家共享的地图
数
据
没法在一个玩家的
数
据
里缓存起来,每一个请求都要去通过传递的地图
数
据
ID检索获取这个
数
据
,不知道有做个类似项目的兄弟有没有更好的思路
问答
请求接口时,代码业务里面有异步连接(AsyncConnection)时出现问题。。。
最近有个物联网项目中,功能是前端页面对设备
进
行远程控
制
,我在HTTP接口业务代码中是用AsyncConnection异步向TCP服务下
发
控
制
指令的,所以设备模块应答的结果也是异步收到。请问大大,接口业务代码里我向TCP服务
发
送
异步请求后,如何等待拿到异步结果后,再response到前端。
问答
每1个
进
程设置一个定时器的问题?
#### 问题描述 设置
进
程
数
为2 在id编号为0的
进
程上设置1个定时器,在id编号为1的
进
程上设置了另外1个定时器,为什么前台建立的连接收到的推
送
要么是222,要么是333,而不是222,333在一起的
问答
$_SESSION 异常报错导致
进
程busy
phpwork/subway-gatewaywoker/vendor/workerman/gateway-worker/src/BusinessWorker.php:424 Stack trace: #0 :
GatewayWorker
Workerman\Worker->run() #6 /mnt/e/phpwork/subway-gatewaywoker/vendor/workerman/workerman/Worker.php(1488):
GatewayWorker
subway-gatewaywoker/vendor/workerman/workerman/Worker.php(1318): Workerman\Worker::forkOneWorkerForLinux(Object(
GatewayWorker
) #11 {main} Worker process terminated ``` worker exit with status 64000服务端在运行一定时间后会出现busy情况,但是排查了一圈
发
现业务内并没有造成循环的问题用文档中的strace看了之后kill掉pid后就不busy了,但是报了这个问题,所以是不是这个问题导致
进
程一直busy呢?如何解决呢?谢谢。
问答
webman-admin与tcp长连接如何做交互
假设有一个简单的后台页面(一个输入框和一个
发
送
按钮) 同时后台也是用gateway-worker监听tcp消息 期望点击“
发
送
”按钮的时候(
发
送
tcp消息)能够显示接收的响应内容。当接收到tcp的响应消息的时候一般要如何与后台网页端交互(比如弹出layui.popup) chatgpt的回答是网页端通过websocket链接,tcp把接收到内容推
送
到websocket,但是感觉这个方案有点多余了tcp的主要功能只是接收tcp客户端上传的内容存入到
数
据
库。 后台的大部分功能只是显示
数
据
库的内容以及相关统计 只有少部分功能像提问的功能这样的。 有没有比较简单又好维护的方案推荐?
问答
[已解决]webman/cache当设置array驱动时,无法缓存
数
据
。
#### 问题描述 webman/cache当设置array驱动时,无法缓存
数
据
。当我直接运行下面两行代码的时候,array驱动模式也是能正常打印
数
据
的,但当我在没有清理缓存的情况下注释掉第一行代码再刷新页面时,打印NULL,使用has时也是false。
问答
关于异步任务
能否自动切换到第
二
台服务器吗?127.0.0.1,如果是集群就是lvs的ip $task_connection = new AsyncTcpConnection('Text://127.0.0.1:12345'); // 任务及参
数
数
据
send_mail', 'args' => array('from'=>'xxx', 'to'=>'xxx', 'contents'=>'xxx'), ); //
发
送
数
据
« 上一页
1
...
110
111
112
113
114
115
116
117
...
430
下一页 »
« 上一页
113
下一页 »
赞助商
+成为赞助商
请作者喝咖啡
×
🔝