workerman
首页
问答
分享
手册
市场
商业
AI客服系统源码
聊天系统源码
Webman AI
物联网
赞助商
webman
搜索
+
发布
提问
分享
webman插件
webman应用
登录
注册
问答
workerman 在类里面无限递归行
不
行
```php public function test(){ //这里是要随机时间的,当然实际肯定
不
是现在这样 $time = rand(10,15); Timer::add($time,function (){ //执行完自己代码后 $this->test();//这里重新
生
成定时器 },[],false) } ``` 然后进程启动后掉要一次 $this->test(); 这个写法会死人吗......总感觉怪怪的,
不
行的话有没有好点思路呀,求帮忙,谢谢
分享
Forum 论坛项目 极致【性能优化】总结分享
这歌个场景是空间换时间和时间换空间的相互配合的结果, 首先是开启Gzip后,返
回
的前端资源会减少80%以上的大小。这很利于利用有
效
的带宽在未来为更多的人提供服
务
其次是[GooseForum](https://gooseforum.online)本身的前端资源是通过golang embed 嵌入到项目之中的,所以把所有文件Gzip后存到内存中数量也是非常有限的,所以
不
用担心oom(内存泄露)的发
生
,并且Gzip本身还是会消耗
不
少的cpu甚至大于许多接口页面本身的逻辑,所以这里是非常值得这样优化的。- 2 项目中每个作者的热点文章也是
不
同的,这里采用类似 user 缓存的策略,但是这里
不
会去主动reload最新数据,因为这里的实
效
性是低于user的(毕竟用户更新了数据,但是发现右上角头像没变会让人当成,
不
会立刻写入,同时还有一个附加逻辑,就是如果这个异步任
务
创建了已经超过了45s但是还没有写入,就会强行写入,否则判断活跃时间是否超过15s 即可,这样会极大减少用户写入的频率。
分享
docker
生
产环境文件
# 解决文件挂在容器内外权限
不
一致问题 # USERNAME 用户名 必须主服
务
器存在的用户 ARG USERNAME=www # USERID 用户id 对应的用户id ARG USERID=1001# 下面的 curl -sS https://getcomposer.org/installer | php 可以
不
需要 二选一 # https://getcomposer.org/versionsigbinary \ # 开启 opcache && docker-php-ext-enable opcache \ # 重要 配置 event 扩加载顺序 到 sockets 后面
不
然会报错提示找
不
到 socket 相关函数 && mv /usr/local/etc/php/conf.d/docker-php-ext-event.ini /usr/local/etc/php/conf.dUSERNAME} # 定义启动脚本 CMD [ "/start.sh" ] ``` docker-compose.yml ``` services: webman: # 解决容器内网文件权限
不
一致问题
问答
大家认为workerman有必要在程序中用数据库连接池吗? 讨论一下。
因为
不
是多线程,或协程,所以一个进程中从请求来临到请求结束都用一个数据库连接,下一个请求来临只要这个链接还有
效
还可以接续用,线程
不
会随着请求的结束而结束,连接池创建多个数据库连接只能是浪费。* php-fmp 更没有必要在程序中做连接池,因为
不
但一个请求是从上到下都
不
会有其他请求干扰(协程),也没有多线程问题。请求结束会销毁掉所有资源,但是做一个外部的连接池(非程序中)比如SMProxy有必要,外部程序做连接池,取来即用,
不
和进程资源一起销毁。* 而swoole协程和java的线程有必要数据库连接池,因为协程
不
是从上到下执行,有可能多个请求同时在被一个进程在处理,有可能并行对数据库的操作,如果还是用一个连接会出现问题,协程或者线程需要自己的连接资源无论协程和线程都有可能随时销毁,
不
是和进程的
生
命周期一样同
生
共死,创建连接池能避免重复
生
成连接带来的消耗。
文档
创建https服
务
# 创建https服
务
**问:** Workerman如何创建一个[https](https://baike.baidu.com/item/https)服
务
,使得客户端可以用过[https](https两种方案选其一即可,
不
可同时设置。2、证书一般是与域名绑定的,所以测试的时候请使用域名,
不
要使用ip。 3、如果使用https无法访问请检查服
务
器防火墙。> **注意** > nginx代理SSL和Workerman设置SSL二选一,
不
能同时开启。,返
回
http协议的数据给nginx 4、nginx再将http协议的数据转换成https,转发给客户端 ### nginx配置参考 **前提条件及准备工作:** 1、假设Workerman监听的是
问答
nginx代理后响应头设置失败
#### 问题描述 ### nginx设置代理后,响应头设置无
效
,麻烦大佬指教一下,谢谢. 以下是nginx代理设置  实际返
回
的响应头 !
问答
请教一个socket长连接相关的问题
walkor大神,请教一个socket相关的问题 现在情况是这样的,我要写一个将MySQL数据同步到ES的服
务
,方案是将MySQL binlog日志解析成结构化的数据,然后写入ES,解析binlog的是一个php cli 单进程,死循环获取binlog数据,因为怕数据太多,消费能力跟
不
上,想着用workerman多个worker进程处理,但是多个worker进程存在的问题是有序性问题,同一张表的
事
件只能同时由一个worker进程处理,我目前的想法是缓存了几个缓存了几个socket链接,然后根据表名去走对应的socket链接发送消息,
不
确定这样子稳
不
稳定。// 启动4个进程对外提供服
务
$worker->count = 6; $worker->name = 'write_es'; Worker::$logFile = __DIR__ . '/' .读取推送结果 echo fread($client, 8192); } function getTableFromEvent($event) { //逻辑没实现,大概就是
不
同的增删改查返
回
不
同的表名
问答
webman里能使用yar 提供服
务
吗
#### 问题描述 其它php业
务
系统调用 用户服
务
,用户服
务
之前用yar提供服
务
端 服
务
比较老(php 5.5)(fpm模式的) 业
务
系统比较多也比较杂,
不
想改业
务
系统的调用代码,新服
务
升级要对调用端无感知怎么重构用户服
务
呢,使用webman的话 #### 为此你搜索到了哪些方案及
不
适用的原因 webman是常驻的,和yar
不
是很配吧 其它语言如 go实现yar协议,用go重构?
问答
AsyncTcpConnection 请求,onMessage中send的数据
不
被代理服
务
器解析
#### 在构建ai应用的时候 我使用AsyncTcpConnection向接口发起请求,接口测试一切正常,但是代理服
务
器读
不
出来onMessage中send的数据 #### 程序代码或配置 ```onMessage 中send的信息都没有输出 ``` #### 操作系统环境及workerman/webman等具体版本 使用的webman 1.5.0 代理服
务
器为vite的proxy
问答
分布式服
务
器Gateway连接数
不
正常
master.png是主服的连接数和请求数 server2.png是分布式2号服
务
器的连接数和请求数 businessWorker似乎是正常的,但Gateway连接数为啥没起来,总请求数也是一模一样
问答
js文件3.0以上的版本连
不
上socketio,服
务
端的socketio需要修改什么设置吗
js文件3.0以上的版本连
不
上socketio,服
务
端的socketio需要修改什么设置吗
分享
我的第一个Webman插件 - 基于Redis Stream实现的消息队列插件
定时任
务
: 延时消息可以用来实现定时任
务
。例如,你可能想在未来的某个时间点执行特定操作,如发送提醒、更新状态等。 2. 延迟处理: 在某些情况下,立即处理消息并
不
理想或可能。$consumerMessage->disableFailRetry(); // 添加日志等等 // 如果在消费方法中自行捕获 Throwable 此
事
件
不
会触发}); // 业
务
逻辑执行完毕,ack确认消息 默认自动ack,但通常建议在业
务
逻辑中显式调用,比如ack失败进行
事
务
回
滚
等等。> 默认情况下需要配置有
效
的日志(log.php) 默认行为才有
效
。也可以通过重写方法完全自行实现,记录在业
务
的数据库中,这也是推荐的做法,可以针对业
务
实现更加灵活的异常处理。> 当`autoDel`属性为`true` > 时,消息会自动删除,无法对历史数据进行处理和分析,如果业
务
需要对历史队列消息进行
回
溯请设置为`false` **代码示例:** 这里我们使用了`webman
问答
能否给closeClient增加一个$reason参数返
回
给客户端么?
能否给closeClient增加一个$reason参数返
回
给客户端么? 或者增加关闭响应$code参数
问答
session管理的问题,
不
知道是
不
是bug
session()->get 一直返
回
NULL 我在一个controller里写的 session()->set('name') 在另一个controller里 session()->get('name'),返
回
一直是null,前端是vue,求大神给予指引!
问答
posix_kill($master_pid, 0) 返
回
false , 但其实是有这个进程的
."); exit; } ``` 最后发现是 posix_kill($master_pid, 0) 返
回
false , 但明明是有这个master_pid是什么原因导致返
回
的false呢 ? posix_kill 这个函数有什么需要特别注意的地方吗?
问答
关于内网穿透应用的两个问题
1,内网穿透数据是
不
是通过服
务
器端中转实现的?对服
务
器的带宽要求高
不
高? 还是说说只是做为地址的转发,用户访问是直接和本地客户端发
生
数据交换?2,内网穿透
不
是https的,数据保密性是
不
是没有保证? 请内行给答疑一下,谢谢
问答
openssl_get_publickey解析公钥报错【解决】
#### 问题描述 这两天遇到个奇怪问题,对接支付的
回
调时要验签,解析公钥准备验签时一直报error:0909006C:PEM routines:get_name:no start line,我是windows开发环境用的phpstudy-8.0,openssl版本1.1.1i,以后是我环境问题,后来又去liunx服
务
器上试了下也是同样错误,服
务
器是宝塔Php-7.4,openssl版本1.0.2u,然后我又在我开始怀疑是因为我直接复制的公钥赋值在变量中因为格式原因报的错,然后用命令
生
成了公钥文件file_get_content来调用公钥,然而还是报错。2天了我怎么都想
不
通哪有问题,如果宝塔有问题装机量这么大
不
会没有人提出,但是用命令行又能解析 -------------------------- 散了吧,支付平台示例
不
完整和客服讨论了半天解决了,也
不
是
问答
是否可将workerman作为已有nginx web服
务
与中心tcp服
务
的桥梁?
已有nginx做web服
务
器,中心服
务
为TCP服
务
(C++实现),现在缺少自web服
务
到TCP服
务
处理环节(实际使用C++完成fcgi程序编写,奈何压测时出现较多问题,定位在C++fcgi库与C++faci进程管理无故丢连接,尚
不
能解决)。经友人推荐使用workerman,但其解决方案是独立于nginx的,本人只想实现适配自web到tcp这个功能,
不
知是否可以使用workerman中作为web服
务
到TCP服
务
中间处理?
问答
webman代码从A服
务
器迁移到B服
务
器的方法?
#### 问题描述 两台都是linux服
务
器,环境是运维手动装的,可能php配置文件的路径稍有差异,其他差
不
多, 我是从A服
务
器拷下全部代码,丢到B服
务
器上,再composer update一下,再start
问答
onWorkerStart & onWorkerReload 调用相同的
回
调函数,有没简洁的写法
```php $worker = new Worker(); $worker->onWorkerStart = function ($worker) { // 一段业
务
逻辑代码 .... }$worker->onWorkerReload= function ($worker) { // 同上 完全相同的一段业
务
逻辑代码 ... } Worker::runAll(); ``` 现在是这么写的 有重复代码 看着很
不
清爽 请问有简洁点的写法吗
« 上一页
1
...
72
73
74
75
76
77
78
79
...
483
下一页 »
« 上一页
75
下一页 »
赞助商
+成为赞助商
请作者喝咖啡
×
🔝