在使用ThinkPHP的开发的过程中我们习惯性的会把`APP_DEBUG`的值设置为`true`,但是在上线的时候我们会将其置为false,用以抑制一些敏感的报错抛出。
在这个上线的过程中,我就遇到这么一个"坑"。
线上环境 **define('APP_DEBUG',false);**,由于是在上线测试阶段,我修改了数据库的一个表,增加了一个字段。然后发现无论如何修改本地的函数文件的函数 `get_area_info()` 都没用。甚至乎我删除了函数文件`Home/Common/function.php`,我开始意识到问题变得糟糕起来。
由于在函数 `get_area_info()` 中我使用到了ThinkPHP提供的缓存函数`S()`,刚开始我一直认为我从数据库中查询的数据是被缓存了,但是我设置了10秒的有效期 ` "DATA_CACHE_TIME" => 10, // 缓存有效期`,**我想数据库中取出的数据,应该十秒钟后过期了才对**。
最后,我删除了缓存文件夹`Runtime`下的所有文件才暴露出来,翻阅ThinkPHP源码如下:
`Think.class.php`文件的`start`静态方法中找到如下代码:
![](https://box.kancloud.cn/2720bc11ffe43cfd99932bc60d81c788_561x117.png)
瞬间我就崩溃了,我想在ThinkPHP中这么做是为了减少加载函数文件带来的开销。由于之前没注意框架的机制导致这种尴尬的开发经历也是在之后的工作中需要总结和提升的地方。
- 开始
- PHP配置参数的介绍
- PHP代码优化
- php中的命名空间
- PHP文件上传类
- PHP文件下载
- PHP验证码
- ThinkPHP3.2 框架函数
- A函数:实例化控制器
- C函数:设置和获取配置参数
- D函数:实例化模型
- F 函数:快速缓存设置和存取
- M函数:例化模型(无需定义模型类)
- L函数:设置和获取语言变量
- S 函数:缓存设置和存取
- R函数:直接调用控制器的操作方法
- U函数:URL地址生成
- I 函数:安全获取系统输入变量
- 日志
- ThinkPHP在关闭调试模式导致函数被缓存
- MySQL触发器使用时遇到的坑
- PHP常用函数
- 五一回家记录
- window的PHP开发(wamp)下安装redis扩展
- Windows下安装使用Redis
- PHP7新特性
- 利用 phpmailer 类实现队列发送邮件
- GD 库图像处理
- 检测 PHP 模块是否开启
- GD 库操作一般步骤
- GD 库绘画改变字体
- GD 绘制验证码
- GD 缩略图实现
- GD 绘制水印
- 日期时间函数库
- PHP 函数
- 无限极分类