workerman实现tcp客户端中间件,该用什么样的方法提供服务?

问题描述 现有第三方服务,实现了TCP服务端,称为服务A。基本用法就是通过创建TCP客户端连接服务A,对服务A发送各种指令,获得响应,以及订阅服务A的各种事件,服务A会主动推送事件通知过来。 我想用wokerman的做一个中间层,负责与服务A通信,并以wokerman为核心提供一些服务,共内部的其他程序使用。流程为本地其他项目————调用workerman中间层————调用服务A,其中wokerman中间层负责将服务...

xiaopi 发表与 2天前 135 浏览 3 回答
【已解决】webman的AsyncTcpConnection的回调中,buffer为什么会拼接长度

问题描述 使用AsyncTcpConnection对一个响应http chunked的url进行请求,在onMessage中打印buffer的值,为什么所有的响应值都是body长度拼接body体的形式? 测试路由,响应出三段body 客户端路由,通过AsyncTcpConnection,向test路由发出请求,并在onMessage中打印buffer内容 控制台打印的结果:body前端携带了长度 ...

xiaopi 发表与 26天前 140 浏览 1 回答
【已解决】webman-admin中菜单如何iframe设置为外部的url?

问题描述 现有需求webman-admin中引入另一个laravel项目,准备在webman-admin的菜单中加入第三方系统的url,然后webman登陆授权后,同时调用接口登陆第三方系统。但是尝试以后发现不行,第一步就有问题,现有的菜单必须得和webman同一个框架才行,即必须是项目本身的路由,无法实现iframe第三方url,请问有方案吗? 为此你搜索到了哪些方案及不适用的原因 这是之前研究的过程 https:...

xiaopi 发表与 2024-03-20 174 浏览 1 回答
【已解决】如何理解webman/admin中的第三方系统接入?

问题描述 我使用webman/admin开发了一个通用的CMS管理模块。本地还有一个laravel开发的admin系统,两个系统如何鉴权打通? 查看webman/admin文档的其他系统接入页面,似乎满足我的需求,但是没看明白,还是没搞清楚怎么把webman-admin嵌入本地的admin系统,或者把本地的admin系统嵌入到webman-admin中。 为此你搜索到了哪些方案及不适用的原因 还遇到的奇怪的问题,即...

xiaopi 发表与 2024-03-19 211 浏览 0 回答
【已解决】workerman5.0的fiber协程,即http协程客户端在自定义进程中使用会提高性能吗

问题描述 现有的主项目是laravel开发的项目,采用分布式部署,会根据不同的事件,将不同的数据回调给不同的第三方url,并发很大,大概一天要回调几百万次,采用laravel queue消费这些回调。目前遇到的问题: 1.对服务器内存消耗较大,需要开了200多个进程去消费这些回调 2.有的客户提供http 服务器响应慢,就会阻塞消费的进程 3.各台服务器负载均衡,所以由哪台服务器发送的不可知,所以客户那边需要绑定我们...

xiaopi 发表与 2024-01-25 479 浏览 1 回答
[已解决]webman+swoole,协程环境中HttpRequest已经做了协程上下文处理了吗

问题描述 1.测试两个请求,第一个请求协程挂起5秒后输出所有请求参数;第二个请求直接输出所有请求参数。如果\Workerman\Protocols\Http\Request没存储上下文的话,第一个请求返回的应该已经被第二个请求污染了啊 2.如果\Workerman\Protocols\Http\Request做了协程上下文处理,那是否意味着在webman控制器中可以不用考虑自己处理请求上下文,可以直接用$reques...

xiaopi 发表与 2024-01-13 587 浏览 2 回答
【已解决】webman中使用swoole,控制器中Request类已经做了协程上下文处理吗

问题描述 我找到了答案,在协程中使用全局变量确实是会互相干扰,只是我下面的代码是开多个进程处理的,恰好两次请求是两个进程,所以是两份全局变量。改成只开1个进程,就会发现协程污染的问题了 目前在已有的webman项目中想使用swoole的协程,所以Event-loop切换成了swoole。 在控制器中的协程环境中,使用全局静态变量,按理说两次请求(两个协程)操作全局变量应该会污染的啊,但是实际上并没有发现污染,是w...

xiaopi 发表与 2024-01-12 313 浏览 0 回答
给第三方系统发http请求,v5异步http比laravel的队列guzzle/http有优势吗

问题描述 目前主项目是laravel开发,其中有个功能是根据用户配置的http地址,将系统的数据收集以后发送过去,目前采用redis队列+guzzle/http的方式进行发送。由于php-cli消费队列时需要开多个消费进程,比较抢占主项目fpm的内存,所以想进行优化,优化方案: 1.业务上将多条数据合并,做一次发送给第三方 2.使用workerman5.0提供的异步http客户端进行发送,具体的流程是主项目在lara...

xiaopi 发表与 2023-12-28 505 浏览 1 回答
【已解决】自己编译的sfx文件二进制打包,打包后运行提示Only run in command line

问题描述 由于需要使用apcu扩展,所以自己编译了一份php8.1静态文件,一次编译了php8.1-static和micro.sfx两个文件。 php8.1-static用于开发环境并未出现任何问题,但是将自己的micro.sfx拷贝到build/目录下打包二进制后,二进制文件不能执行,提示"only run in command line mode"。怀疑是编译的时候少东西 编译语句为: $ ...

xiaopi 发表与 2023-12-19 281 浏览 1 回答
webman自定义共享内存进程,根据请求参数累计连续2000次后发送告警信息

问题描述 需求如下: 接收第三方http请求,根据请求中某个参数的累计的次数发送告警信息,如请求会发送status参数,status:false表示失败,status:true表示成功,统计连续失败次数达到2000次后,发送告警信息 日请求次数达到1000w+ 问题:根据需求我自定义了单进程tcp服务,使用内存计数;在http服务开启了8个进程,http服务接收到请求后使用AsyncTcpConnection异步发...

xiaopi 发表与 2023-12-16 424 浏览 3 回答
自定义的应用插件可以开启/关闭吗

问题描述 基础插件可以通过app.php中的enable来控制是否启用 应用插件可以通过在plugin/foo/config/app.php中设置enable来控制是否启用该插件么? 尝试添加后,不起作用 启用、关闭不同的应用插件,主要是为了将目前写的几个webman服务插件化,在打包时,可以方便的组合不同的插件服务 为此你搜索到了哪些方案及不适用的原因 查询应用插件文档,并未发现相应的内容...

xiaopi 发表与 2023-12-09 192 浏览 1 回答
webman中,plugin/pluginName与config/plugin目录有什么区别?

问题描述 我发现安装的redis队列包、event包都是在config/plugin目录下,并且每个目录下有个app.php文件中,可以配置enable,用来开启/关闭对应插件。如config/plugin/redis-queue/app.php中: return [ 'enable' => false, //关闭redis队列插件 ]; 同理自己写的插件都在plugin/目录下面,自己写的应用插件和上...

xiaopi 发表与 2023-12-08 211 浏览 1 回答
jenssegers/mongodb 中如何批量插入,遇到唯一索引就忽略错误?

问题描述 在webman中使用jenssegers/mongodb包,如果集合中已经存在相同的数据,再插入相同数据就会报错。请问有其他的方法可以批量插入吗? 伪代码类似,其中number+user_id是复合唯一索引: $data = [ [ 'number' => '22215800138000', 'user_id' =...

xiaopi 发表与 2023-12-07 159 浏览 0 回答
自定义http进程无法ab压测

问题描述 我在webman项目中做了一个插件:dialString, 由于该插件存在慢业务处理,所以在dialString插件中自定义了一个http进程 但是我定义的http服务无法进行ab压测, webman自己处理的http服务,压测正常: 自定义进程处理的http服务,压测失败 开启的监听服务: 为此你搜索到了哪些方案及不适用的原因 怀疑是http自定义进程中,我没有正确的处理响应之类的,...

xiaopi 发表与 2023-12-06 206 浏览 1 回答
应用插件可以自定义http服务吗

问题描述 目前项目准备使用【应用插件】的方式拆分项目模块,以便提供快速安装的功能。目前想把【身份验证】模块单独作为插件开发,但是插件好像不能定义独立http服务,比如主项目监听的端口是127.0.0.1:8787,插件【身份验证】是一个慢处理业务,我想单独定义为127.0.0.1:5656端口来处理,访问的路由是127.0.0.1:5656/app/idcard/check 为此你搜索到了哪些方案及不适用的原因 目前...

xiaopi 发表与 2023-11-30 244 浏览 1 回答
ai问答+php8.1-static,回复报错

问题描述 ai问答 php8.1静态编译版本,回复显示 php_network_getaddresses: getaddrinfo for ai.fakeopen.com failed: Name does not resolve 截图报错信息里报错文件相关代码 测试结果 结果测试,使用apt安装的php8.1-cli就可以正常回复,但是使用php8.1-static版本就会出现如上图的错误 静态地址:https...

xiaopi 发表与 2023-10-31 300 浏览 1 回答
webman中,v5 http-client 协程与guzzlehttp异步并发请求对比

问题描述 webman中,【workerman v5 http-client 协程】与【guzzlehttp/guzzle 异步并发请求】对比优势,似乎并不明显。 这几天研究workerman v5的http-client协程的,目的是提高程序中IO请求的性能。发现协程的方式并不能减少请求时间,而且对并发提升也不多。 安装http-client php8.1 /usr/local/bin/composer req...

xiaopi 发表与 2023-05-23 2323 浏览 5 回答
生产环境,执行webman程序使用debug模式,是否会有隐患

问题描述 在生产环境中想对webman程序进程开启自启、挂了自动重启,所以使用supervisord进行管理,但是在supervisodr配置中,使用php webman.phar start -d 后台启动时,supervisor报错,似乎不支持,改成php webman.phar start,则正常守护webman.phar进程。 如果在生产环境中对webman.phar使用debug模式,是否会有安全隐患? ...

xiaopi 发表与 2023-05-19 908 浏览 1 回答
webman 打包成phar后,自定义命令中获取不到数据库配置

问题描述 前提:打包成phar文件后,未包含.env文件。 自定义命令中执行查询数据库操作,提示错误SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO) 调试发现自定义命令中并未获取到.env中的配置。 请问如何使打包后,自定义命令依旧可以读取xxx.phar文件同级目录下.env文件...

xiaopi 发表与 2023-05-18 511 浏览 2 回答
webman中使用Eloquent ORM ,内存在空闲时不会释放

问题描述 webman中使用Eloquent ORM ,内存在进程空闲时也不会释放,请问会出问题吗? 是不是已经发生了内存泄漏? 如图是开启几分钟后分,进行了业务以后的状态 ...

xiaopi 发表与 2023-05-16 649 浏览 1 回答

xiaopi

-220
积分
0
获赞数
0
粉丝数
2022-02-17 加入
🔝