workerman
首页
问答
分享
手册
市场
商业
AI客服系统源码
聊天系统源码
Webman AI
物联网
赞助商
webman
搜索
+
发布
提问
分享
webman插件
webman应用
登录
注册
问答
如果作为网游服
务
器,那服
务
端轮循如何实现?
服
务
端需要即时刷新服
务
器所有数据,例如刷新地图,可能几毫秒就刷新一遍。这个情况下如何实现轮循呢? 利用workerman就能实现,还是说,自己用其他方法?
分享
PHP-Raylib 视 频 游 戏 编 程 库
+版本而且文档可能还要去翻 C ,这对于 phper 来说是很扯蛋的一件
事
情。 所以我就自己使用ffi拓展对接了一下最新的5.5版本。也从 c 示例上使用PHP来实现了一部分(看文档示例)。`可能完善度
不
高,欢迎 PR。", 190, 200, 20, $green); Core::endDrawing(); // 结束绘制 } // 关闭窗口 Core::closeWindow(); ``` ##
效
果展示
文档
请求
**获取get数组的某一个值** ```php $request->get('name'); ``` 如果get数组中
不
包含这个值则返
回
null。**获取post数组的某一个值** ```php $request->post('name'); ``` 如果post数组中
不
包含这个值则返
回
null。foreach ($request->file() as $key => $spl_file) { var_export($spl_file->isValid()); // 文件是否有
效
,## 获取请求url `url()`方法返
回
不
带有`Query` 参数 的 URL。透过代理获得客户端真实IP的比较可靠的方法是,已知安全的代理服
务
器IP,并且明确知道携带真实IP是哪个HTTP头,如果`$request->getRemoteIp()`返
回
的IP确认为已知的安全的代理服
务
器
分享
根据官方文档依赖注入出现`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 服
务
端自动断开是什么原因?
请教下:gatewayworker 服
务
端自动断开是什么原因? 运行一段时间后,或者关闭连接窗口后会断开,php start.php start
不
是一直打开状态吗?
问答
🚀 社区提问规范 🚀
### 详细清晰的描述 问题没人
回
复80%以上是因为大家无法明白提问者的意图,或者缺失一些关键信息例如测试代码、完整的报错及调用栈,具体报错文件代码截图等,
回
答者
不
愿意花费时间像挤牙膏一样
不
断询问具体情况### 粘贴完整的报错信息 如有报错,请
务
必粘贴**完整**的报错内容及**完整**的调用栈(有的话)。如果报错中包含了报错文件及行数,请
务
必截图报错文件里那几行的代码,因为大部分报错问题的关键就在那几行代码。### 整洁的排版 排版一定要整洁规范,**代码用及报错信息请
务
必使用工具栏的代码块格式化(如下图)**。混乱的排版说明你
不
重视这个问题,同时也是对
回
答者的
不
尊重,自然也就没有人
回
答。 !### 请勿重复发帖 问题没人
回
复请勿重复发帖
问答
我看代码写的是随机这个列表请求 如果有台服
务
器挂了,随机请求到这台服
务
器就会请求失败是吗,而
不
是请求失败后会去列表的其他服
务
器请求
集群情况下服
务
器请求失败,会去另一台请求吗
问答
gatewayworker能
不
能聊天和消息提示走
不
同端口啊?怎么实现?
'127.0.0.1:1236', ]] ], shop\services\sockets\Events里只做绑定,把gatewayWorker当作推送通道,除了上下线
事
件处理发送消息 在控制器里调用GatewayClient调用gatewayWorer接口发送消息 GatewayClient::sendToUid($uid, $message); ``` 但是这样实现
不
了聊天走一个端口
文档
编程须知
windows系统
不
支持stop reload status reload connections等命令。 windows
不
支持守护进程模式。所以正式环境业
务
代码或配置变更后需要执行`php start.php reload`才能
生
效
。> 为了方便开发,webman自带一个monitor自定义进程用于监控业
务
文件更新,当有业
务
文件更新时会自动执行reload。##
不
要执行`exit` `die`语句 执行die或者exit会使得进程退出并重启,导致当前请求无法被正确响应。##
不
要执行`pcntl_fork`函数 `pcntl_fork`用户创建一个进程,这在webman中是
不
允许的。
问答
一次请求下载多个EXCEL
#### 问题描述 业
务
需求 用户点一次按钮会
生
成多个表格 下载 这里写问题具体描述 return response()->download($file_path, $fileName); 现在一次只能下载一个
问答
php tp5.1 workerman 本地调试都正常,代码更新到linux服
务
器上,启动后报错
#### 问题描述 linux服
务
器上启动workerman #### 程序代码 ``` <?$connection->send($content); } catch (HttpException $e) { ``` #### 报错信息 ``` 服
务
器启动worker后服
务
端返
回
错误信息。
问答
【已解决】定时任
务
怎么执行指定的类中的方法(或静态方法)
#### 问题描述 使用的组件时`workerman/crontab`,看手册介绍的例子是在定时任
务
文件中的匿名函数中编写业
务
处理,如果我想在一个类种的某个方法里写业
务
逻辑。如何写才能调用到。#### 为此你搜索到了哪些方案及
不
适用的原因 我使用`new Crontab('*/1 * * * * *',call_user_func([HomeController::class,'index']));` 就启动的时候执行了一次,后面
不
执行了。
问答
webman中使用GatewayWorker后registerAddress端口修改无
效
function onWorkerStart($worker) { var_dump(Gateway::$registerAddress); } ``` 打印出来端口还是1236,并
不
是
分享
Ⓜ️ 案例系列 | webman云端同步阿里云盘存储文件服
务
## 阿里云盘 阿里云盘是阿里巴巴集团推出的一款个人云存储服
务
产品。它为用户提供了一个安全、稳定、高
效
的云端存储空间,用户可以在其中存储、管理和同步各种类型的文件和数据。[截图](/upload/img/20240810/1066b6cbf40f81.png) ## 接入流程 > 服
务
端 API 调用流程如下图所示 !
文档
Redis队列
,否则返
回
false或者抛出异常。** > 如果命令
不
存在也可以手动
生
成 ```php <?> redis-queue没有ack机制,你可以把它看作是自动ack(没有产
生
异常或Error)。如果消费过程中想标记当前消息消费
不
成功,可以手动抛出异常,让当前消息进入重试队列。> **提示** > 消费者支持多服
务
器多进程,并且同一条消息**
不
会**被重复消费。消费过的消息会自动从队列删除,无需手动删除。如果redis接收速度慢于消息
生
产速度,或者进程一直忙于其它业
务
没有足够的时间将内存的消息同步给redis,就会导致消息挤压。如果有消息挤压超过600秒,就会触发此错误。
问答
BusinessWorker面对高并发出现busy
没有操作数据库之类的只是做转发处理,从出现的情况来看和连接数也多少也没有直接关系,查看日志后里面让我去看: See http://wiki.workerman.net/Error2 for detail 这个网页,看了后说是业
务
造成死循环导致的,但是从我代码来看并
不
会出现死循环,随后我在发送消息时我在业
务
处理前监测它,但是并没有第一时间收到数据,而我在业
务
处理完后也监测它,只要我接收消息就在业
务
处理中就
不
会产
生
延迟,说明是在发送信息中就阻塞的
问答
windows下运行如何
不
显示命令窗口?
#### 问题描述 客户需求用本地电脑Windows做服
务
器 现在运行windows.bat或php windows.php,命令窗口一直显示
不
能关闭 如何
不
显示命令窗口,还能正常运行?
问答
请教关于session和异步任
务
的两个疑问
GatewayWorker,碰到两个小问题求教 1.在Events中onMessage中,假设有3000个设备发消息过来,我把每个设备的id都存入到$_SESSION中,这里大量操作$_SESSION会
不
会造成业
务
堵塞因为每天设备上发数据量比较大,都先写入REDIS,现在想用异步任
务
去读取redis队列中的数据然后写入MYSQL,如果开了多个进程去取数据,会
不
会造成重复写入 另外问个项目实现思路的问题: 现在服
务
器A上单独跑了GW来处理硬件上报数据,然后另外服
务
器B上WEB后台需要获取硬件的在线状态 我现在的做法是单独开了websocket协议的gateway,然后WEB后台连上来,服
务
器A中GW接收数据, 大概代码是这样
问答
php start.php stop命令无
效
,只有直接killall -9 php 再启动
[](//www.workerman.net/upload/20210118/1860050206411b.png)
不
知道什么原因,
文档
特性
Gateway服
务
和Worker服
务
可以分开部署在
不
同的服
务
器上,实现分布式集群。### 3、支持分布式部署 GatewayWorker可以非常方便实现分布式部署,Gateway服
务
和Worker服
务
都可以分开部署在
不
同的服
务
器集群上。并且操作简单、容易扩容、上下线用户无感知。GatewayWorker可以非常方便的支持多协议,只需要以
不
同的协议开
不
同的端口即可,业
务
代码无需改动。在WorkerMan中,一个进程
生
命周期内静态成员或者全局变量在
不
主动销毁的情况下是永久保持的,也就是将对象或者链接等资源放到全局变量或者类静态成员中则整个进程
生
命周期内的所有请求都可以复用。例如只要单个进程内初始化一次数据库连接,则以后这个进程的所有请求都可以复用这个数据库连接,避免了频繁连接数据库过程中TCP三次握手、 数据库权限验证、断开连接时TCP四次握手的过程,极大的提高了应用程序
效
率
« 上一页
1
...
104
105
106
107
108
109
110
111
...
461
下一页 »
« 上一页
107
下一页 »
赞助商
+成为赞助商
请作者喝咖啡
×
🔝