首页 > 作文

如何减少 Hyperf 框架的扫描时间

更新时间:2023-04-08 10:59:45 阅读: 评论:0

原因

hyperf框架为了防止用户更新组件后,代理缓存没有更新导致启动报错。增加了以下钩子。

{    "scripts": {        "post-autoload-dump": [            "init-proxy.sh"        ]    }}

  

init-proxy.sh脚本,会执行php bin/hyperf.php di:init-proxy命令清理代理缓存,并重新生成。

$ compor init-proxy> init-proxy.sh../../runtime clearedscanning app ...scan app completed, took 195.76692581177 milliconds.scanning vendor ...scan vendor completed, took 510.0839138031 milliconds.this command does not clear the runtime cache, if you want to delete them, u `vendor/bin/init-proxy.sh` instead.proxy class create success.finish!

上述演示中,我们很清楚的可以看到花费的时间,现在不足1s其实还可以接受。但如果您的模型非常多,这个时间可能会是无法忍受的一个点。比如以下情况。

$ compor init-proxy> init-proxy.sh../../runtime clearedscanning app ...scan app completed, took 3063.5998249054 milliconds.scanning vendor ...scan vendor completed, took 490.39006233215 milliconds.this command does not clear the runtime cache, if you want to delete them, u `vendor/bin/init-proxy.sh` instead.proxy class create success.finish!

  

解决办法

以下解决办法建立在正确使用 model 的基础上。比如不在 model 中使用注解。检测办法是,不排除 model 目录的情况下生成一下代理缓存,查看是否生成 model 相关的代理。

所以,我们可以主动修改hyperf框架的扫描目录,排除掉模型目录。让我们写一段逻辑,修改annotations.php

<?phpdeclare(strict_types=1);u symfony\component\finder\finder;return [    'scan' => [        'paths' => value(function () {            $paths = [];            $dirs = finder::create()->in(ba_path . '/app')                ->depth('< 1')                ->exclude(['model']) // 此处按照实际情况进行修改                ->directories();            /** @var splfileinfo $dir */            foreach ($dirs as $dir) {                $paths[] = $dir->getrealpath();            }            return $paths;        绿色低碳环保}),        'ignore_anno小动物作文300字tations' => [            'mixin',        ],    ],];

  

当我们再执行命令时,就会发现时间被大大缩短。

写在最后

hyperf 是基于 swoole 4.4+ 实现的高性能、高灵活性的 php 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 php-fpm 的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展性,标准组件均基于 psr 标准 实现,基于强大的依赖注入设计,保证了绝大部分组件或类都是 可替换 与 可复用 的。

框架新格列佛游记组件库除了常见的协程版的 mysql 客户端、redis 客户端,还为您准备了协程版的 eloquent orm、websocket 服务端及客户端、json rpc 服务端及客户端、lols6世界总决赛grpc 服务端及客户端、zipkin/jaeger (opentracing) 客户端、guzzle http 客户端、elasticarch 客户端、consul 客户端、etcd 客户端、amqp 组件、apollo 配置中心、阿里云 acm 应用配置管理、etcd 配置中心、基于令牌桶算法的限流器、通用连接池、熔断器、swagger 文档生成、swoole tracker、blade 和 smarty 视图引擎、snowflake 全局 id 生成器 等组件,省去了自己实现对应协程版本的麻烦。

hyperf 还提供了 基于 psr-11 的依赖注入容器、注解、aop 面向切面编程、基于 psr-15 的中间件、自定义进程、基于 psr-14 的事件管理器、redis/rabbitmq 消息队列、自动模型缓存、基于 psr-16 的缓存、crontab 秒级定时任务、translation 国际化、validation 验证器 等非常便捷的功能,满足丰富的技术场景和业务场景,开箱即用。

更多学习内容请访问:

腾讯t3-t4标准精品php返老还童 美国电影架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)

本文发布于:2023-04-08 10:59:43,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/78a86b3759714f1c4ddf966d915bf835.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:如何减少 Hyperf 框架的扫描时间.doc

本文 PDF 下载地址:如何减少 Hyperf 框架的扫描时间.pdf

下一篇:返回列表
标签:客户端   组件   缓存   框架
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图