在使用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`靜態方法中找到如下代碼:

瞬間我就崩潰了,我想在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 函數
- 無限極分類