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 条评论) |