laravel - 在 Laravel 中遇到缓慢的启动时间
问题描述
我接手了一个项目,注意到它们的启动时间平均为 2-3 秒,但使用 Laravel Debugbar 时发现它们的启动时间达到了 9-10 秒。
现在,试图确定它的来源,我在同一台服务器下创建了一个新应用程序,并使用同一台 MySQL 服务器。我什至重新创建了基本页面的刀片,差异很大。在使用相同的数据库、相同的服务器和相同的刀片模板(至少作为示例)的情况下,平均启动时间可能缩短到 3.4 到 5.6 毫秒。
现在我的问题是,基于这些因素,我可以做些什么来尝试找出真正的问题是在旧版本中启动时间延迟(请注意,它会定期更新到最稳定的 Laravel 版本,所以从 Laravel 4.1 或任何东西开始,它就不老了)?我讨厌不得不重建整个事情,但绝对更喜欢在这些缓慢的时间对于一个我不会认为简单但绝对不复杂的项目。
我希望 Laravel Debugbar 能给我我需要的提示,但就我而言,延迟肯定与数据库无关......
我应该提一下,我已经使用了常规的缓存工匠命令,例如 route、viewconfig:cache
等。会话缓存和一般缓存是通过 Redis 处理的。
解决方案
我会检查在请求的生命周期中执行了哪些服务提供者和中间件。但我给你一个清单,列出我会做些什么来调试这些东西。
签
'providers'
入config/app.php
并禁用“应用程序服务提供商”部分下的所有内容。检查下的中间件配置
app/Kernel.php
,看看是否有可疑之处。使用没有中间件的新控制器创建新
/test
路由并检查该路由的访问时间。如果它很快,那么有一些英国媒体报道软件正在为其他路线执行。检查工匠命令的响应。执行 artisan 命令时,会加载所有服务提供者(但不加载中间件)。显示所有命令的简单
php artisan
程序应该是即时的在 MySQL 中启用查询日志并检查所有针对简单请求的查询。
推荐阅读
- amazon-web-services - 如何将 PUBLIC aws sftp 服务器转换为使用 terraform 托管的 VPC
- docker - docker 无效的标签格式
- python - 表格字符串数据转换为 python 数据
- typescript - 有没有办法访问未通过 .prototype 设置的 Vue 对象全局属性?
- typescript - 停止 typescript-eslint/explicit-module-boundary-types 应用于不使用 Typescript 的 vue 组件
- python - Python - 数据框合并 + JSON
- java - 如何解决 UCanAcess “不支持的较新版本:51”-错误
- reactjs - 如何避免在使用 gatsby 的 graphql 查询中指定每个叶子属性
- redis - Spring data redis zadd 命令错过了 nx|xx|incr 选项
- ios - 当其中一个 UITextView 增长超过一行时,UICollectionReusableView 高度无法调整大小