认识:ThinkPHP的编译缓存⽂件~runtime.php
1.定义单⼊⼝⽂件(index.php)
在单⼊⼝index.php中不定义这两项时,会⽣成编译缓存⽂件~runtime.phpphp初学者项目
define('RUNTIME_PATH','./App/Temp/'); //定义编译⽬录
define('APP_DEBUG',TRUE); //开启调试模式
上述两⾏不能在index.php中作⽤,则index.php变为
1 <?php
2define('APP_NAME','App'); //项⽬名称
3define('APP_PATH','./App/'); //项⽬路径
4include './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或者删除该定义。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论