1. 程式人生 > >ThinkPHP框架的runtime分析

ThinkPHP框架的runtime分析

其中,在利用tp生成的專案目錄中就有一個Runtime目錄,即專案執行時目錄。

在tp的入口檔案中有如下:

//記錄開始執行時間
$GLOBALS['_beginTime'] = microtime(TRUE);
// 記錄記憶體初始使用
define('MEMORY_LIMIT_ON',function_exists('memory_get_usage'));
if(MEMORY_LIMIT_ON) $GLOBALS['_startUseMems'] = memory_get_usage();

////判斷是否有定義APP_PATH,如果沒有則定義:工程名/
defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']).'/');

//定義RUNTIME_PATH常量,如果沒有定義,則定義成tp/Runtime/
defined('RUNTIME_PATH') or define('RUNTIME_PATH',APP_PATH.'Runtime/');

//是否定義APP_DEBUG常量,黙認為false
defined('APP_DEBUG') or define('APP_DEBUG',false); // 是否除錯模式
$runtime = defined('MODE_NAME')?'~'.strtolower(MODE_NAME).'_runtime.php':'~runtime.php';
defined('RUNTIME_FILE') or define('RUNTIME_FILE',RUNTIME_PATH.$runtime);
if(!APP_DEBUG && is_file(RUNTIME_FILE)) {


    // 部署模式直接載入執行快取
    require RUNTIME_FILE;
}else{
    // 系統目錄定義
    defined('THINK_PATH') or define('THINK_PATH', dirname(__FILE__).'/');
    // 載入執行時檔案
    require THINK_PATH.'Common/runtime.php';
}

通過分析,第一次執行時,如果沒有開通app_debug會產生runtime.php檔案,以後每次執行都會判斷是否開啟,

並且是否有runtime檔案,如果有則使用,沒有則建立。