workerman
首页
问答
分享
手册
市场
商业
AI客服系统源码
聊天系统源码
Webman AI
物联网
赞助商
webman
搜索
+
发布
提问
分享
webman插件
webman应用
登录
注册
文档
原理
# 工作原理 1、Register、Gateway、BusinessWorker进程启动 2、Gateway、BusinessWorker进程启动后向Register
服
务
进程发起长连接注册自己 3、Register
服
务
收到Gateway的注册后,把所有Gateway的通讯地址保存在内存中 4、Register
服
务
收到BusinessWorker的注册后,把内存中所有的Gateway的通讯地址发给9、客户端的事件及数据全部由Gateway转发给BusinessWorker处理,BusinessWorker默认调用Events.php中的onConnect onMessage onClose处理
业
务
逻辑10、BusinessWorker的
业
务
逻辑入口全部在Events.php中,包括onWorkerStart进程启动事件(进程事件)、onConnect连接事件(客户端事件)、onMessage消息事件,非常容易实现分布式部署,扩容
服
务
器 3、Gateway进程只负责网络IO,
业
务
实现都在Worker进程上,可以reload Worker进程,实现在不影响用户的情况下完成代码热更新。
问答
请问数据怎么从worker传回到tp框架内,tp框架怎么传递数据到worker内。
要做的是: tp处理
业
务
逻辑,worker作为转发,硬件客户端做响应。硬件客户端和
服
务
器要双向传递数据。 我现在做到的是调通
服
务
器和硬件间的tcp连接,通过onMsesage来交互数据。
问答
webman里安装好了gatewayworker,怎么监听两个websock的端口?
webman里安装好了gatewayworker,只有一个websock的端口监听,想再加一个websock的新的端口监听别的
业
务
,怎么做? !'127.0.0.1', 'startPort' => 2300, 'pingNotResponseLimit' => 1,//客户端是否必须发送心跳给
服
务
端,1发送,0不发送 'pingInterval' => 55, // 'pingData' => '{"msg_type":"ping"}',//
服
务
端发送给客户端的心跳
分享
关于webman的发展,提一点不成熟的建议。
通过我在it
业
这么多年,看了许多行
业
和技术的发展,我个人认为,只有产品才能够创造价值。webman无疑在php的地位是难以撼动的,但是无法打造出一个产品和
服
务
的体系。始终停留在只是技术员的玩物阶段。[截图](/upload/img/20241025/25671b6b0233c2.png) 所有的生态都做好了,并且是统一的,拿来就可以用,然后用
服
务
(视频教程等)来收费,解决个性化需求,这样可能更加好
文档
Crontab定时任
务
# crontab定时任
务
组件 ## 说明 `workerman/crontab`类似linux的crontab,不同的是`workerman/crontab`支持秒级定时。,所有定时任
务
进入下一分钟才会开始计时执行 ## 说明 crontab并不是异步的,例如一个task进程里设置了A和B两个定时器,都是每秒执行一次任
务
,但是A任
务
耗时10秒,那么B需要等待A执行完才能被执行如果
业
务
对于时间间隔很敏感,需要将敏感的定时任
务
放到单独的进程去运行,防止被其它定时任
务
影响。Task1::class ], 'task2' => [ 'handler' => process\Task2::class ], ]; ``` 将时间敏感的定时任
务
放在`process/Task1.php` 里,其它定时任
务
放在 `process/Task2.php` 里 更多`config/process.php`配置说明,请参考 [自定义进程](..
问答
getewayworker多端口发送消息问题求助
您好,假设我有一个
业
务
前台连接workerman端口1111,有一个
业
务
后台连接端口2222,当
业
务
后台进行一些操作要连接到workerman之后,发送给所有来自端口1111的用户,而不是sendToAll
问答
我用workerman搭建了一个http代理
服
务
,但是上不了谷歌网站
我买了一个美国的vps,在上面装了php运行环境,然后用workerman网站首页的php-http-proxy http代理的源码跑了一个http代理
服
务
,成功的运行起来了,我本地浏览器也改成了使用我这个
问答
Worker 不间断执行任
务
最佳实践
现在因为
业
务
需要,我们启动了 10 个 Worker 不间断的从腾讯云的消息队列获取消息,并且转发给对应的物联网设备。如截图所示,当 onWorkerStart 之后,通过 while(true) 不间断从腾讯云消费消息,针对此实现方案,想请教大家两个问题: 1、Gateway 中 除了使用 worker 做这种任
务
外
文档
为什么要分布式部署
# GatewayWorker分布式的好处 ### 1、成倍提高系统承载能力并降低成本 **单机**遇到资源瓶颈时,要想支持更大的用户量,一般是优化
业
务
和增加
服
务
器配置。**GatewayWorker支持分布式部署**,你可以利用多台价格低廉的普通
服
务
器,组成一个庞大的
服
务
器集群,成倍的增加系统承载能力,这不管在资金成本上还是人力成本上都是最划算的方案。### 2、提高系统稳定性 **单机**对外提供
服
务
,则风险很大,
服
务
器任何故障都可能引起整个
服
务
的不可用。**GatewayWorker分布式**可以有效的降低这个风险,如果一台
服
务
器故障宕机,还有其它
服
务
器可以继续工作,可以做到对
服
务
无影响或者影响最小化。例如GatewayWorker中一台Gateway
服
务
器宕机,可以利用LVS健康探测等技术立刻踢掉故障ip,集群立刻恢复
服
务
。
问答
同一台
服
务
器 rpc通过jsonNL方式,开启2个进程,一个进程通过tcp调用另外个进程。很高的概率卡死,出现busy
同一台
服
务
器 rpc通过jsonNL方式内部调用,开启2个进程,一个进程通过tcp调用另外个进程。很高的概率卡死,出现busy。
问答
webman本地开发的程序放到
服
务
器就没法启动了
#### 问题描述 在本地开发好的程序,然后部署到
服
务
器上就启动不了了 运行start后 又退出了 然后就报以下错误了 #### 报错信息 ``` Press Ctrl+C to stop.
问答
web异步任
务
问题
我想咨询一下,在web端,前端post了一个任
务
请求, 后端拿到请求后,通过workerman能新开一个进程或者work 来执行我一个比较耗时间的任
务
么?然后当前的主进程去响应前端, 任
务
结束后自主关闭或者交给系统回收, 因为此时主进程的http结束了。 有相关的代码示例么?而且我更想问的是,目前看到的是相当于创建了一个
服
务
器 所以是否有这个开启新进程的方法。
问答
定时器任
务
要每隔一段时间查询数据库,每次执行定时任
务
都要连一次数据库吗,在初始化时连了后面就找不到了
设置的定时器任
务
要每隔一段时间查询数据库, 每次执行定时任
务
都要连一次数据库吗, 下面是代码。/vendor/autoload.php'; $task = new Worker(); // 开启多少个进程运行定时任
务
,注意
业
务
是否在多进程有并发问题 $task->count = 1; $task
问答
群发消息客户端能收到消息,但是websocket连接成功时无法接收到client_id
#### 问题描述 项目和gatewayworker
服
务
是独立部署的,在同一个
服
务
器上,GatewayWorker不接受客户端发来的数据,即GatewayWorker不处理任何
业
务
逻辑,GatewayWorker问题: 客户端websocket连接成功了,
服
务
端执行接口Gateway::sendToAll,客户端也能接收到消息,但是连接成功时,接收不到client_id,日志里Events.php中的onConnectWebSocket("wss://websocket.baoxiaoban.com/wss"); ws.onopen = function(event) { alert("连接成功"); }; //
服
务
端主动推送消息时会触发这里的alert(data.client_id); clientId = data.client_id; // 可以在这里将client_id发送到
服
务
器进行绑定或其他操作// 其他消息处理 } }; </script> Events.php代码: class Events { /** * 当客户端连接时触发 * 如果
业
务
不需此回调可以删除
问答
关于 Channel Workerman 的 count 问题
按我理解的方式来说明的话 假设我们有两个
服
务
,
业
务
都是更新数据库 >workerA 为 count = 10 workerB 为 count = 1 从某个地方同时请求 10个的话 > worker的场景 --- > `ServerA` 只是 默认的worker ,没有配置端口(count 为 1) > `ServerB` 配置了端口和 http协议 并设置 count 为 10 --- 爬虫
业
务
部分是🤔️ 虽然问题是解决了,但困扰我的就在这个 Channel
服
务
上 因为跟 `问题01` 一样 进程是 1,如果信息量大的话会不会阻塞?$remote = new AsyncTcpConnection($remote_websocket); $remote->onMessage = function($data){ // 一些
业
务
$remote = new AsyncTcpConnection($remote_websocket); $remote->onMessage = function($data){ // 一些
业
务
问答
MySQL数据库的问题
运行过程中,如果MySQL数据库停了,那么workerman就会报一个致命错误,然后
业
务
进程就会重启,有没有办法可以让
业
务
进程不重启
问答
与ThinkPHP等框架结合的实现方式如何使用定时器
与ThinkPHP等框架结合后,如何使用定时器,因为
业
务
都在TP中写了,而定时器只能在GatewayWorker中使用。要怎样才能使用定时器与
业
务
结合?
问答
webman 定时任
务
执行 2 次问题跟踪
#### 问题描述 前几天遇到添加的定时任
务
Task,经常会同一时间执行两次。尝试了很多办法: 1、设置进程数 count = 1,无效 2、升级 crontab 包,composer workerman/crontab ^1.0.6 ,无效 3、安 webman 定时任
务
文档check 了多遍,无效 试着删除 process.php 中添加的 task handler,在
服
务
器上的 docker 环境正常了,定时任
务
可以每次只执行一次,本地的 Mac 电脑上却不执行任何定时任
务
了#### 程序代码或配置
服
务
器使用的 docker 镜像: ``` version: "3.7" services: data-tools: image: krisss/docker-webman
问答
用webman+AI写了聊天室的代码,
服
务
端一直收不到消息,哪里的问题啊?
#### 问题描述 用webman+AI写了聊天室的代码,
服
务
端一直收不到消息,哪里的问题啊? ``` <?connectionMap = []; // 新增:IP到连接的映射 public function onWorkerStart() { // 创建 WebSocket
服
务
器Log::channel('timer')->info("WebSocket
服
务
器启动", ['port' => '8788']); $ws_worker = new
问答
用workerman做
服
务
端接收tcp连接传过来的数据。测试发现一段时间之后数据不再接收,这个如何处理?
用workerman做
服
务
端接收tcp连接传过来的数据。测试发现一段时间之后数据不再接收,之后再过一段时间或者重启workerman又会集中接收到之前没有传过来的数据
« 上一页
1
...
45
46
47
48
49
50
51
52
...
222
下一页 »
« 上一页
48
下一页 »
赞助商
+成为赞助商
请作者喝咖啡
×
🔝