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
驱动。
推荐文章: