workerman
首页
问答
分享
手册
市场
物联网
webman
AI助手
搜索
+
发布
提问
分享
webman插件
webman应用
登录
注册
问答
关于异步任
务
http://doc.workerman.net/faq/async-task.html 对文档异步任
务
有个疑问 例如我有10台专门处理异步任
务
的服
务
器 能否做到负载均衡一样的
效
果呢 例如一台建立了10个任
务
.能否自动切换到第二台服
务
器吗?还是需要自己去判断A服
务
器 是否建立了10个任
务
自动切换IP呢 ```php new AsyncTcpConnection('Text://127.0.0.1:12345'); use Workerman->onMessage = function($ws_connection, $message) { // 与远程task服
务
建立异步连接,ip为远程task服
务
的ip,如果是本机就是127.0.0.1
问答
使用分布式部署GatewayWorker,定时器在每台服
务
器上都在运行
请问如何控制只在主机上运行定时任
务
或者有没有可能
生
成一个独立的业
务
进程,专供定时器运行
问答
UDP监听IPV6地址码格式,IPV4onMessage正常返
回
数据,IPV6地址onMessage数据发送后服
务
器没有
回
复
Workerman\Worker; require_once '/home/app/socket_server/Workerman/Autoloader.php'; // 创建一个Worker监听2347端口,
不
使用任何应用层协议$udp_worker = new Worker("udp://[::]:9001"); // 启动4个进程对外提供服
务
$udp_worker->count = 4; // 当客户端发来数据时
问答
webman能否在
不
同应用下,采用
不
同的view模板引擎
两者的标签发
生
冲突了。遂有个疑问,webman能否做到
不
同应用采用
不
同的模板引擎?比如admin采用原
生
php渲染,而主应用采用twig渲染这种
分享
都来说一说,用Workerman/Webman开发需要特别注意的
事
项,方便大家快速排坑
### Composer包的引入 问题:很多包并
不
适用,我就在
生
产的时候遇到过这样一个问题 ```php $this->app->setRuntimePath($this->app->getRuntimePath但是
生
产环境下,这种影响是
不
可预估的。类似的语句我在很多地方都看到过。这并
不
是一个错误。它只是
不
适合在非传统模式下运行。 如何避免呢? 1.
不
了解的组件,
不
要使用单例,而是在需要的时候直接new ### 异常现场的捕获 对可能发
生
的异常,捕获处理。特别是使用timer等workerman组件,内部最好裹上一层try{}catch{},
不
然一次异常就有可能导致整个程序崩溃。 ### 开发时的建议 1. 避免使用低版本的php 2.
问答
stream_socket_client创建链接的问题(可能和异步有关)
[截图](//www.workerman.net/upload/20200827/275f478d13356d.png) 上面是代码 出现问题的场景是订单支付成功后,微信发送支付成功的异步
回
调 这时在
回
调中建立一个套接字来告诉server需要发送数据了 服
务
开启的状态这个流程没有任何问题了 但是如果把服
务
关闭,stream_socket_client是会连接失败的 此时的业
务
逻辑是如果stream_socket_client建立失败需要退款 但是stream_socket_client建立失败时没有再继续执行了(类似阻塞的感觉),
不
知道是否和stream_socket_client在异步时timeout参数失
效
导致的.
问答
webman 里面用 Gateway::sendToClient( $send_id , json_encode($post) );
webman 里面使用gateway 推送消息无
效
。 结果返
回
true 。
文档
特性
Workerman开启一个主进程和多个子进程对外提供服
务
, 主进程负责监控子进程,子进程独自监听网络连接并接收发送及处理数据,由于进程模型简单,使得Workerman更加稳定,更加高
效
。### 7、支持服
务
平滑重启 当需要重启服
务
时(例如发布版本),我们
不
希望正在处理用户请求的进程被立刻终止,更
不
希望重启的那一刻导致客户端通讯失败。Workerman提供了平滑重启功能,能够保障服
务
平滑升级,
不
影响客户端的使用。 ### 8、支持文件更新检测及自动加载 在开发过程中,我们希望在我们改动代码后能够立刻
生
效
,以便查看结果。/components/file-monitor.md),只要文件有更新,Workerman会自动运行reload,以便加载新的文件,使之
生
效
。在Workerman中,一个进程
生
命周期内静态成员或者全局变量在
不
主动销毁的情况下是永久保持的,也就是将对象或者连接等资源放到全局变量或者类静态成员中则当前进程的整个
生
命周期内的所有请求都可以复用。
问答
gatewayworker启动了,但是没有监听程序
是怎么
回
事
,而且cpu占到了100%。 之前有成功启动了,没问题,现在突然出问题了。 求各位大神帮忙,谢谢了。websocket连接
不
上。
问答
请帮忙解决下Mqtt
不
能声明问题,谢谢!
Warning: Cannot declare class \Workerman\Protocols\Mqtt, because the name is already in use in 服
务
器收到数据,需要使用MQTT.转发到其它服
务
器上,在public static function onMessage($client_id, $message)
回
调中使用mqtt,出现
不
能声明的问题。
问答
高并发下WebmanApp里的onMessage方法使用static保存变量会
不
会冲突
## 高并发下onMessage方法中的变量冲突可能 `\Webman\App::onMessage($connection, $request)`方法里用静态变量保存请求变量和连接变量,这样它们会
不
会在高并发下当前请求还未执行完而被并行请求修改了类似于数据库
事
务
中的脏读 ``` static::$_request = $request; static::$_connection = $connection; ```
问答
当连接超过1000以后,整个服
务
都卡住了
我liunx服
务
器上,连接超过1000的时候,我的机器就卡住了,广播无法进行,网页也无法打开,,只有关闭服
务
的时候才有
效
,我看下内核设置,差
不
过都可以是可以的,看了代码,也没有限制最大的连接数。而且我服
务
器环境下也安装了libevent 服
务
器设置如下 ```ssh net.ipv4.ip_forward=1 net.ipv4.conf.default.rp_filter=1 net.ipv4net.ipv6.conf.all.disable_ipv6=1 net.nf_conntrack_max=640000 #net.ipv4.ip_conntrack_max = 10240 ```
不
知道是什么原因导致的,是否还有没设置的的情况 而且在我本机的mac上,也设置了差
不
多的环境,而且mac上安装了libevent,但是mac机的情况就是最大连接只有600多,多余的一律断开连接。。
问答
$request->action返
回
的控制器名称是否为小写?
$request->action返
回
的控制器名称是否为小写? 测试了一下,是这样。
不
知道是
不
是永远这样。
问答
onWorkerStart里的global全局变量,是只在本子线程里有
效
吗?
#### onWorkerStart里的global全局变量,是只在本子线程里有
效
吗?connection->send(json_encode($all_tables)); }; // 运行worker Worker::runAll(); ``` 这个【global $db】是只在本子线程里有
效
吧本子线程里的【global $db】,只是在本子线程里的全局变量,
不
影响主线程、其它子线程、主线程里取它
不
到、其它子线程取它
不
到(其它子线程可以使用自己的,但直接取
不
到其它子线程里的),这样吗?越学越觉得Workerman牛B,之前一直使用windows环境,因为客户
不
懂linux,用windows环境 若有问题 ,客户自己也能解决。
问答
因为想做平滑重启,于是将onmessage
回
调函数里面的代码放到另一个文件中,用require_once()引入进来,但是开启服
务
后,只能接受一次客户端的请求,再次请求就会请求
不
到怎么
回
事
我把代码用函数封装起来,再require_once进来,调用函数,这样开启服
务
后,客户端就能一直请求得到结果
问答
redis-queue消息队列组件 消费没有
生
效
,请问是什么原因?
按照手册去做,下载安装 粘贴代码 运行以后在redis客户端里可以看到消息投递成功了,但是在消费里面打印得日志没有任何东西,是
不
是没有消费成功,可是也没有任何报错,搞
不
懂问题出在哪里 #### 配置代码
问答
php8.4.1 原
生
模板问题
return json(['code' => 0, 'msg' => trans('login_success')]); } } ``` #### 重现问题的步骤 用的原
生
模板
问答
workerman 非阻塞IO如何理解?
#### 问题描述 文档有说是非阻塞IO,但是看完以后,还是有IO是阻塞的错觉,所以能
不
能就IO这个问题详细讲一下?为什么说workerman是非阻塞IO,当非阻塞的时候会发
生
什么
事
情?
问答
分布式部署,怎么让斗地主的人进入同一个服
务
器上的同一个房间
进同一个房间可以解决,根据房间号.但是怎么让第一个人进入服
务
器a时,另一个客户查询后,也进入服
务
器a. 通过什么确定,内网ip? 在start_gateway.php路由中设置对吧.如果通过内网ip,假如有三台业
务
服
务
器,是
不
是在创建打牌的房间时,
事
先就直接选择好下面的其中一个服
务
器 DoudizhuWorker:这里填内网ip1:7272:端口号 DoudizhuWorker然后,客户通过解析到公网ip的域名访问服
务
器.
问答
(二楼
事
例)
测试得知:php文件记
事
本打开另存为ansi格式,发送或接收的中文字符串才能正常显示,否则就是乱码的。 可
不
可以改成utf8格式也能正常显示中文呢?
« 上一页
1
...
37
38
39
40
41
42
43
44
...
433
下一页 »
« 上一页
40
下一页 »
赞助商
特别赞助栏位
+成为赞助商
×
请作者喝咖啡
×
🔝