標籤:
1.定義單入口檔案(index.php)
在單入口index.php中不定義這兩項時,會產生編譯快取檔案~runtime.php
define(‘RUNTIME_PATH‘,‘./App/Temp/‘); //定義編譯目錄define(‘APP_DEBUG‘,TRUE); //開啟偵錯模式
上述兩行不能在index.php中作用,則index.php變為
1 <?php2 define(‘APP_NAME‘,‘App‘); //項目名稱3 define(‘APP_PATH‘,‘./App/‘); //項目路徑4 include ‘./ThinkPHP/ThinkPHP.php‘; //引入ThinkPHP核心運行檔案5 ?>
2.產生編譯快取檔案(~runtime.php)
3.複製~runtime.php中的全部內容到index.php中,運行效果會和之前一樣。
~runtime.php中緩衝的編譯內容,相當於把index.php引導的所有操作全部整合到~runtime.php檔案中。
有了這個緩衝的編譯檔案,index.php在下次運行時,不再引導,而是直接檢測是否存在~runtime.php編譯快取檔案,如果在,則直接運行~runtime.php。
其他詳解(來自此處)
項目編譯機制是指系統第一次啟動並執行時候會自動產生核心快取檔案~runtime.php和項目編譯快取檔案~app.php。
這些編譯快取檔案把核心和項目必須的檔案打包到一個檔案中,並且去掉所有空白和注釋代碼,因為存在一個先行編譯的過程,所以還會進行一些相關的目錄檢測,對於不存在的目錄可以自動產生,這個自動產生機制後面還會提到。
當第二次執行的時候就會直接載入編譯過的快取檔案,從而省去很多IO開銷,加快執行速度。項目編譯機制對運行沒有任何影響,先行編譯操作和其他的目錄檢測機制只會執行一次,因此無論在先行編譯過程中做了多少複雜的操作,對後面的執行沒有任何效率的缺失。
~runtime.php包含的檔案由系統的core.php檔案決定,如果是採用了模式擴充的話,就由模式擴充入口檔案決定。預設的核心模式下麵包含了下面的一些檔案:系統定義檔案defines.php、系統函數庫functions.php、系統基類Think、異常基類ThinkException、日誌類 Log、應用類 App、控制器基類 Action、視圖類 View。
其他類庫可以在操作方法中使用系統匯入機制或者自動載入機制完成載入。
~app.php 通常包含了下面的一些檔案:項目設定檔(由慣例配置、項目配置合并而成)、項目公用函數檔案common.php。每個項目還可以單獨添加自己的項目編譯檔案清單,只需要在項目配置目錄下面定義app.php檔案,返回需要額外添加到項目編譯緩衝的檔案清單數組即可。
【入口檔案index.php中設定】
編譯快取檔案,預設是自動產生在項目目錄下面的Runtime目錄下面。、
define(‘RUNTIME_PATH‘,‘./MyApp/temp/‘); //如果希望自己設定目錄,可以在入口檔案裡面設定RUNTIME_PATH變更
注意在Linux環境下面需要對RUNTIME_PATH目錄設定可寫入權限。
注意在偵錯模式下面不會產生項目編譯緩衝,但是依然會產生核心緩衝
define(‘NO_CACHE_RUNTIME‘,True); //不希望產生核心快取檔案的話
define(‘STRIP_RUNTIME_SPACE‘,false); //設定對編譯緩衝的內容是否進行去空白和注釋
則產生的編譯快取檔案是沒有經過去注釋和空白的,僅僅是把檔案合并到一起,這樣的好處是便於調試的錯誤定位,建議部署模式的時候把上面的設定為True或者刪除該定義。
認識:ThinkPHP的編譯快取檔案~runtime.php