接收第三方http请求,根据请求中某个参数的累计的次数发送告警信息,如请求会发送status参数,status:false表示失败,status:true表示成功,统计连续失败次数达到2000次后,发送告警信息
日请求次数达到1000w+
AsyncTcpConnection
异步发送到单进程中做计数处理
代码是否在大并发中出现问题?比如出现内存泄漏、进程重启的问题,因为一旦进程自动重启,计数的值就没了
是否可以达到日请求1000w+?
process.php配置
统计逻辑
向自定义tcp服务发送
所以你为什么不用redis 呢? redis-server 也支持unixsocket 通信,不一定要TCP
感谢解答,不用redis unixsocket的原因是redis unixsocket机制只能本机进程共享,而这个项目后面可能会把http服务分布在多台服务器上部署。如果使用redis tcp通信的话,也需要单独的搭建一个redis。考虑部署方便,维护、以及成本,所以先用内存存储
你可能需要真正的
共享内存
workerman有个globalData共享内存,我尝试改成webman版本,没弄好
别折腾了,这里早就有人实现分享出来:https://www.workerman.net/a/1589
感谢,webman-shared-cache确实性能高,虽然不是持久化,但是可以解决我的共享内存问题,接下来我我看看怎么把apcu打包到php8.1-static中
直接actions 或者 本地打包就可了,actions需要gd库 做一点处理,有需要你@我
@tanhongbin 啥叫gd库不行,我在issues中也发现有人说gd库不行,不过我没看明白,我手动打包以后,gd库是正常的啊。这是我手动打包的步骤:https://www.workerman.net/a/1605
你用admin了嘛 你会发现 验证码出不来 报错 就是gd库 里面缺少一些配置
明白了,有些gd配置没开么,是否可以在-I "memory_limit=512M"里面包含这些gd库? 不过我看手动编译可以加上这些,但是你说的actions这个我试了一下,没有添加这些ini配置的地方啊,如何调整ini参数?
不行的 ,必须打包静态php的时候 处理
咋处理?
我给你找找哈
老哥,为啥我试了两次github actions,都报错了,提示:Key Validation Error: php-8.1-dependencies-bcmath,calendar,ctype,curl,dba,dom,exif,filter,fileinfo,gd,iconv,intl,mbstring,mbregex,mysqli,mysqlnd,openssl,opcache,pcntl,pdo,pdo_mysql,pgsql,phar,posix,readline,redis,session,simplexml,sockets,sodium,sqlite3,tokenizer,xml,xmlreader,xmlwriter,xsl,zip,zlib,mongodb,event,soap,shmop,xlswriter,pdo_sqlite cannot contain commas. 不是说用逗号分隔扩展么,如"apcu,redis,ctype"
这个 不影响吧
有两处 需要修改
https://github.com/tanhongbin-php/static-php-cli 这是我的,你可以fork一下 然后自己看看
里面有两处改过了 问的这个插件的作者改的
感谢,不过修改的地方是gd扩展的一些配置么? 如果是配置,那写在--debug -I "memory_limit=512M"里面 是否也有效果啊?
没有的 扩展里面的配置 ,你写文件里面没有用的
我试了一下手动编译了一份,好像是可以的啊 -I "memory_limit=512M" -I "apc.shm_size=512M"
改了一下,使用
apcu
共享内存,webman插件是webman-shared-cache
,可以在多个进程中共享内存,但是不知道会不会z在多个进程并发处理的时候出现问题,尤其时定时器,在发送告警后,当前进程开启一个一次性定时器,2分钟后删除apcu中的信息,目的就是2分钟期间内不统计新的数据@walkor 麻烦老大给看看。