tp5.1中由于配置加载比较靠后可能导致隐藏问题
我在tp官方发帖了,但5.1不再更新了。
官方回复
简单的概括一下,tp5.1框架流程是:
1、 加载行为扩展文件
2、 加载公共文件
3、 加载系统助手函数
4、 加载中间件
5、 注册服务的容器对象实例
6、 自动读取配置文件
因为加载配置信息放在了第6步,前面5部的时候,你如果使用框架的组件(常用的cahce、log),那组件的不是按照你config里面的配置去运行的。
这个问题比较隐蔽,因为只是使用了默认配置,不会直接报错,你未必会发现它。
举个简单的例子:框架自带的一个共文件:application/common.php,这个文件的加载顺序对应上面的[2、 加载公共文件]。
如果你在里面写了一行:
<?php
// 应用公共文件
\think\facade\Cache::set('xx', 1);
那么,尽管你在config/cache.php配置是使用redis缓存,但这里仍然是使用file驱动。
你可以发现存在runtime/cache目录。(如果事先就有这目录,删了再测试)。
使用\think\facade\Cache的任何方法都会导致cache驱动问题,Cache::set会
这个问题比较容易出现的是[2、4、5]阶段,自己写公共文件或第三方composer库的中间件中。
如果在项目中出现,可能会影响性能,尤其是项目开启路由缓存,将会导致路由缓存使用file驱动。
关于 LearnKu
推荐文章: