1.定義單入口文件(index.php)
在單入口index.php中不定義這兩項時,會生成編譯緩存文件~runtime.php
define('RUNTIME_PATH','./App/Temp/'); //定義編譯目錄 define('APP_DEBUG',TRUE); //開啟調試模式
上述兩行不能在index.php中作用,則index.php變為
1 <?php 2 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或者刪除該定義。