永州网,内容丰富有趣,生活中的好帮手!
永州网 > 头条 > 正文

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

时间:2000-04-07 23:25:00

相关推荐

原因

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

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

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

$ composer init-proxy> init-proxy.sh../../Runtime clearedScanning app ...Scan app completed, took 195.76692581177 milliseconds.Scanning vendor ...Scan vendor completed, took 510.0839138031 milliseconds.This command does not clear the runtime cache, If you want to delete them, use `vendor/bin/init-proxy.sh` instead.Proxy class create success.Finish!

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

$ composer init-proxy> init-proxy.sh../../Runtime clearedScanning app ...Scan app completed, took 3063.5998249054 milliseconds.Scanning vendor ...Scan vendor completed, took 490.39006233215 milliseconds.This command does not clear the runtime cache, If you want to delete them, use `vendor/bin/init-proxy.sh` instead.Proxy class create success.Finish!

解决办法

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

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

[ 'paths' => value(function () { $paths = []; $dirs = Finder::create()->in(BASE_PATH . '/app') ->depth('< 1') ->exclude(['Model']) // 此处按照实际情况进行修改 ->directories(); /** @var SplFileInfo $dir */ foreach ($dirs as $dir) { $paths[] = $dir->getRealPath(); } return $paths; }), 'ignore_annotations' => [ 'mixin', ], ],];

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

写在最后

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

框架组件库除了常见的协程版的 MySQL 客户端、Redis 客户端,还为您准备了协程版的 Eloquent ORM、WebSocket 服务端及客户端、JSON RPC 服务端及客户端、GRPC 服务端及客户端、Zipkin/Jaeger (OpenTracing) 客户端、Guzzle HTTP 客户端、Elasticsearch 客户端、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架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)

收集不易,本文《如何减少 Hyperf 框架的扫描时间》知识如果对你有帮助,请点赞收藏并留下你的评论。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
勒索软件 勒索软件防护打不开怎么办

勒索软件 勒索软件防护打不开怎么办

...用户可以尝试使用安全模式启动电脑并运行杀毒软件进行扫描和清除。勒索软件的威胁需要引起足够重视,用户应该时刻保持警惕并采取有效措施进行防护。勒索软件,指的是一种恶意软件,通过加密受害人的数据,使其无法访...

2024-03-13

陈根:辐射利好?合金自我修复能帮助延长寿命

陈根:辐射利好?合金自我修复能帮助延长寿命

...从而实现自身资产的升值。《金融学入门一本通》购买请扫描京东官方二维码新书推荐2经济学的本质在于研究、把握和运用经济规律,实现资源的优化配置与优化再生,最大限度创造、转化和实现价值,满足人类物质文化生活...

2024-02-07

职场人写作为何要框架式写作

职场人写作为何要框架式写作

职场人写作为何要框架式写作?框架式写作是一种有组织和清晰的写作方式,可以帮助职场人在处理各种工作文档和邮件时更加高效和精准地表达想法和观点。它通过明确的结构和逻辑,使读者更容易理解和接受信息。框架式写...

2024-03-09

门式刚架错层框架钢结构的分析与设计:顶层构型下的研究

门式刚架错层框架钢结构的分析与设计:顶层构型下的研究

顶层为门式刚架的错层框架钢结构的分析与设计论文摘 要:本文以一个多层钢结构厂房为例,分析了顶层为门式刚架的错层钢结构框架房屋的结构布置、构造措施,对主要节点的设计进行了讨论。关键词:门式刚架;多层框架...

2024-01-21