解析ThinkPHP5如何引入Go AOP和PHP AOP编程
项目背景
目前开发的web软件里有这一个功能,php访问api操作数据仓库,刚开始数据仓库小,没发现问题,随着数据越来越多,调用api时常超时(60s)。于是决定采用异步请求,改为60s能返回数据则返回,不能则返回一个异步id,然后轮询是否完成统计任务。由于项目紧,人手不足,必须以最小的代价解决当前问题。
方案选择
- 重新分析需求,并改进代码
- 采用AOP方式改动程序
从新做需求分析,以及详细设计,并改动代码,需要产品,架构,前端,后端的支持。会惊动的人过多,在资源紧张的情况下是不推荐的。
采用AOP方式,不改动原有代码逻辑,只需要后端就能完成大部分任务了。后端用AOP切入请求API的方法,通过监听API返回的结果来控制是否让其继续运行原有的逻辑(API在60s返回了数据),或者是进入离线任务功能(API报告统计任务不能在60s内完成)。
之前用过AOP-PHP拓展,上手很简单,不过后来在某一个大项目中引入该拓展后,直接爆了out of memory,然后就研究其源码发现,它改变了语法树,并Hook了每个被调用的方法,也就是每个方法被调用是都会去询问AOP-PHP,这个方法有没有切面方法。所以效率损失是比较大的。而且这个项目距离现在已经有8年没更新了。所以不推荐该解决方案。
实际环境
Debian,php-fpm-7.0,ThinkPHP-5.10。
引入AOP
作为一门zui好的语言,PHP是不自带AOP的。那就得安装AOP-PHP拓展,当我打开pecl要下载时,傻眼了,全是bate版,没有显示说明支持php7。但我还是抱着侥幸心理,找到了git,发现4-5年没更新了,要不要等一波更新,哦,作者在issue里说了有时间就开始兼容php7。
好吧,狠话不多说,下一个方案:Go!AOP.看了下git,作者是个穿白体恤,喜欢山峰的大帅哥,基本每个issue都会很热心回复。
composer require goaop/framework
- SEO服务什么意思?全面解析S···
- 如何通过“搜索引擎关键词”提升···
- docker怎么把镜像打包成文···
- 淘宝直播入口何处寻?观看步骤详···
- Revolutionize E···
- 做SEO推广赚钱吗?揭秘SEO···
- 论文速成平台
- 如何压缩js文件
- 建站优选虚机推荐_高性价比配置···
- 平板能否用于淘宝直播?
- 济南家教网,口碑排名领先
- 电商培训核心内容概览
- 创新启航:打造专属企业网站的探···
- 如何通过网站排名SEO提升网站···
- 如何选择一个可靠的广告联盟赚钱···
- 太原SEO收费透明,高效管理
- 怎么让Bing收录网站?快速提···
- AI生成场景描述:革新创意表达···
- 广州网站制作:专业定制,打造线···
- Ajax提交表单数据时,Bou···
- WordPress - 构建你···
- 在有域名和主机的情况下,应该怎···
- “新锐推广神器,一触即达巅峰!···
- notepad怎么修改字体大小
- 从零到1800:7年网站收录量···
- “畅游宝库,免费游戏集结地”
- 美食网建站原因大揭秘:如何实现···
- 京东保价申请流程是怎样的?
- 京东vs天猫,哪家货源更可靠?
- AICACM是什么软件?开启智···
- 焕新购物体验,尽在全新商城!
- VPS上织梦建站时常见的插件和···
- 提升网站性能的秘诀:深度解析W···
- 哪个软件写文章好用?这几个软件···
- 网站类型解析:如何选择最适合您···
- 青岛智格广告科技,创新传播领航···
- GPT3.5免费吗?揭秘Ope···
- Vue3 中 onload 方···
- linux备份文件命令有哪些?
- 2024企业建站报价方案模板:···
- 品牌推广,精准触达,高效传播!
- 全球电商巨头,排名TOP10速···
- 简单解析产品运营架构(上)
- 忘记京东支付密码怎么办?
- 苹果CMS首页公告设置教程,轻···
- 全网免费推广秘籍,一招制胜!
- 简化餐厅库存管理:挑战和解决方···
- 母婴行业该怎样利用软文做好全网···
- 巴中有哪些公司专业做网站SEO···
- 怎么使用tar命令备份Linu···