workerman
首页
问答
分享
手册
市场
商业
AI客服系统源码
聊天系统源码
Webman AI
物联网
赞助商
webman
搜索
+
发布
提问
分享
webman插件
webman应用
登录
注册
问答
如果作为网游服
务
器,那服
务
端轮循如何实现?
服
务
端需要即时刷新服
务
器所有数据,例如刷新地图,可能几毫秒就刷新一遍。这个情况下如何实现轮循呢? 利用workerman就能实现,还是说,自己用其他方法?
问答
小白咨询workerman问题
我想知道workerman对于长轮询、短轮询来说,是否能有
效
减轻服
务
器压力? 2. 有一篇文章,我想直接推送所有内容(标题、时间、内容等),这样就
不
用去存储介质中读取数据了,节省了一次HTTP请求。可是这样会
不
会造成丢包现象或某个用户收
不
到的情况?? 还是说仅仅推送一个文章id,用户收到文章id后去数据库读取显示比较稳妥些?
问答
gatewayworker能
不
能聊天和消息提示走
不
同端口啊?怎么实现?
'127.0.0.1:1236', ]] ], shop\services\sockets\Events里只做绑定,把gatewayWorker当作推送通道,除了上下线
事
件处理发送消息 在控制器里调用GatewayClient调用gatewayWorer接口发送消息 GatewayClient::sendToUid($uid, $message); ``` 但是这样实现
不
了聊天走一个端口
问答
请教下,大佬 如何用workerman 替代nginx 做多个域名指向
不
同的端口
如题: 在一台纯净版服
务
器上面 如何用workerman 替代nginx 做多个域名指向
不
同的端口,让服
务
器除php以外都
不
安装 让这台服
务
器只跑workerman、webman服
务
看了文档,http
文档
特性
Gateway服
务
和Worker服
务
可以分开部署在
不
同的服
务
器上,实现分布式集群。### 3、支持分布式部署 GatewayWorker可以非常方便实现分布式部署,Gateway服
务
和Worker服
务
都可以分开部署在
不
同的服
务
器集群上。并且操作简单、容易扩容、上下线用户无感知。GatewayWorker可以非常方便的支持多协议,只需要以
不
同的协议开
不
同的端口即可,业
务
代码无需改动。在WorkerMan中,一个进程
生
命周期内静态成员或者全局变量在
不
主动销毁的情况下是永久保持的,也就是将对象或者链接等资源放到全局变量或者类静态成员中则整个进程
生
命周期内的所有请求都可以复用。例如只要单个进程内初始化一次数据库连接,则以后这个进程的所有请求都可以复用这个数据库连接,避免了频繁连接数据库过程中TCP三次握手、 数据库权限验证、断开连接时TCP四次握手的过程,极大的提高了应用程序
效
率
分享
OSS 直传阿里腾讯示例
今天 Q 群有朋友说
不
会 OSS 直传,那我就来写个例子吧。欢迎兄弟们探讨交流。 # 0.通常前端先上传到服
务
器,然后通过服
务
器再上传到OSS,即中传了一次。'/1.php'), 'ContentType' => 'text/plain', ]); } ``` ## 1.3 前端直传文件到OSS ### 1.3.1 服
务
器先
生
成签名表单formAttributes); // print_r($formInputs); return [$formAttributes, $formInputs]; } ``` 返
回
的## 2.2 前端直接上传文件 ### 2.2.1 服
务
器先
生
成签名表单 ```php function buildForm(\Aws\S3\S3Client $s3client): array {
问答
关于workerman的工作模式
#### 问题描述 workerman的工作模式
不
就是swoole的单线程模式(SWOOLE_BASE)吗?在reactor模型的单线程模式的某个线程中,如果
回
调函数或者叫
事
件处理函数十分耗时,那么就无法执行到epoll_wait,于是无法立即处理后面的
事
件 情况1:设置workerman的count=1,那么只有一个逻辑CPU在处理所有请求,如果一个请求执行耗时操作中,那么下一个请求就进
不
来; 情况2:设置workerman的count=n(>1),对应于多个reactor单线程模式。假设某个worker进程(该进程是单线程的)的
回
调函数执行了耗时的操作,但是下一个请求可以负载均衡分配到其它的worker进程(该进程是单线程的),还是可以立即响应的。我的理解是对的吧?#### 代码 情况1:count=1,
回
调函数handle_message中sleep(100) ``` <?
问答
多进程如何平均分配连接数
#### 问题描述 1、项目里有一个设备接入服
务
,是多进程运行,在每个进程里创建一个异步客户端。比如 4 个进程 2、起了另一个服
务
TCP服
务
,上面的异步客户端连接到这里,接受来自接入服
务
的数据。同样 4 个进程 3、通过'reusePort' => true, 目的是可以平均接入服
务
的4个异步AsyncTcpConnection,结果是连接还是集中在其中1个或者2个随机的进程里。'reusePort' => true 没有起
效
#### 程序代码或配置 'option' => [ 'count' => 4,
问答
请问如果在cli模式下启用http协议,如何发送header头呢?
Workerman\MySQL\Connection('127.0.0.1', '50681', 'root', 'root', 'aqr_develop'); }; // 接收到浏览器发送的数据时
回
复json_encode($all_tables)); // $connection->send(PHP_SAPI); }; // 运行worker Worker::runAll(); ``` 设置了header头,无
效
问答
wokerman 差
不
多隔了
不
到一天就会断链,这是什么情况 ,obj.socket.emit('execute_tele',sendParam);就会
不
返
回
信息
问答
Redis消息队列组件 redis-queue 的消费 Consumer 对象怎么记录 Exception?
如 class TestConsumer implements Consumer 这样的消费对象方法中,如果抛出异常,似乎被什么默认
事
件处理了,
不
会抛出?
问答
请教下:gatewayworker 服
务
端自动断开是什么原因?
请教下:gatewayworker 服
务
端自动断开是什么原因? 运行一段时间后,或者关闭连接窗口后会断开,php start.php start
不
是一直打开状态吗?
分享
根据官方文档依赖注入出现`ReflectionParameter::getClass()`的解决方法
www.workerman.net/doc/webman/di.html)来进行依赖注入,会出现`Method ReflectionParameter::getClass() is deprecated`的问题,该问题的产
生
是因为php8
不
支持`getClass()`写法,得用`getType()`的写法 ## 解决方案 - 在项目底下创建`modify.php`文件 - 修改`composer.json`文件,新增`post-install-cmdupdatedContent = str_replace('$parameter->getClass()', '$parameter->getType()', $content); // 将替换后的内容写
回
文件
问答
gatewayworker设置的worker数量太多,导致require_once文件失败
一个基于gatewayworker框架的服
务
器程序,我设置了5个gate, 10个worker,然后一个含5个worker的客户端,每个worker发起1000个连接到服
务
器,发现服
务
器报require_once文件失败,是从autoload.php调用起来的,竟然 会出现这种
事
!
问答
我看代码写的是随机这个列表请求 如果有台服
务
器挂了,随机请求到这台服
务
器就会请求失败是吗,而
不
是请求失败后会去列表的其他服
务
器请求
集群情况下服
务
器请求失败,会去另一台请求吗
问答
请教关于session和异步任
务
的两个疑问
GatewayWorker,碰到两个小问题求教 1.在Events中onMessage中,假设有3000个设备发消息过来,我把每个设备的id都存入到$_SESSION中,这里大量操作$_SESSION会
不
会造成业
务
堵塞因为每天设备上发数据量比较大,都先写入REDIS,现在想用异步任
务
去读取redis队列中的数据然后写入MYSQL,如果开了多个进程去取数据,会
不
会造成重复写入 另外问个项目实现思路的问题: 现在服
务
器A上单独跑了GW来处理硬件上报数据,然后另外服
务
器B上WEB后台需要获取硬件的在线状态 我现在的做法是单独开了websocket协议的gateway,然后WEB后台连上来,服
务
器A中GW接收数据, 大概代码是这样
文档
Gateway类的使用
> **注意** > GatewayWorker
不
支持监听Http协议。但是可以在业
务
中以客户端的形式通过http协议(比如curl)访问远程服
务
器。[多服
务
器分布式部署](how-distributed.md)的时候需要填写真实的内网ip,
不
能填写127.0.0.1。当本机有多个Gateway/BusinessWorker项目时,需要把每个项目的startPort设置成
不
同的段 6、registerAddress,注册服
务
地址,格式类似于 '127.0.0.1:1236和Worker一样,可以设置Gateway进程启动后的
回
调函数,一般在这个
回
调里面初始化一些全局数据 9、onWorkerStop 和Worker一样,可以设置Gateway进程关闭的
回
调函数,一般在这个
回
调里面做数据清理或者保存数据工作 10、onConnect(比较少用到,开发者一般
不
用关注) 和Worker一样,可以设置onConnect
回
调,当有客户端连接上来时触发。
问答
【已解决】定时任
务
怎么执行指定的类中的方法(或静态方法)
#### 问题描述 使用的组件时`workerman/crontab`,看手册介绍的例子是在定时任
务
文件中的匿名函数中编写业
务
处理,如果我想在一个类种的某个方法里写业
务
逻辑。如何写才能调用到。#### 为此你搜索到了哪些方案及
不
适用的原因 我使用`new Crontab('*/1 * * * * *',call_user_func([HomeController::class,'index']));` 就启动的时候执行了一次,后面
不
执行了。
问答
大佬们怎么用thinkphp8整合workerman的http服
务
来运行api?
#### 问题描述 我现在是用命令行启动了http服
务
,并在onmessage中执行tp的http,但是一直访问到控制器index下面的index方法,其他api更换路由也无法访问。 ``` <?监听2345端口,使用http协议通讯 $http_worker = new Worker("http://0.0.0.0:2345"); // 启动4个进程对外提供服
务
$http_worker->count = 4; // 接收到浏览器发送的数据时
回
复hello world给浏览器 $http_worker->onMessage
问答
BusinessWorker面对高并发出现busy
没有操作数据库之类的只是做转发处理,从出现的情况来看和连接数也多少也没有直接关系,查看日志后里面让我去看: See http://wiki.workerman.net/Error2 for detail 这个网页,看了后说是业
务
造成死循环导致的,但是从我代码来看并
不
会出现死循环,随后我在发送消息时我在业
务
处理前监测它,但是并没有第一时间收到数据,而我在业
务
处理完后也监测它,只要我接收消息就在业
务
处理中就
不
会产
生
延迟,说明是在发送信息中就阻塞的
« 上一页
1
...
109
110
111
112
113
114
115
116
...
480
下一页 »
« 上一页
112
下一页 »
赞助商
+成为赞助商
请作者喝咖啡
×
🔝