thinkphp学习笔记3—项目编译和调试模式
2014-06-14 17:10
453 查看
1.项目编译
在章节2.4项目编译中作者讲到使用thinkphp的项目在第一次运行的时候会吧核心需要加载的文件去掉空白和注释合并到一个文件中编译并缓存,第二次运行时直接载入编译缓存,这样省去一些IO开销,加快执行速度。并且在3.0以上的版本中海做了一些优化:
1.合并和兴编译缓存和项目编译缓存,不再生成两个缓存文件
2.直接对本地环境生成设置和常量定义减少环境判断
3.编译缓存可以直接替换框架入口甚至项目入口,甚至脱离框架独立运行
4.通过参数设置,生成的编译缓存载入外部的常量定义,便于产品用户定义
貌似高上大,后面继续讲在没有开启调试模式的情况下会在thinkphp\Application\Runtime目录下生成一个~runtime.php的文件,就是编译缓存文件。我实验了一下,在项目入口文件中有一句define('APP_DEBUG',True);修改成define('APP_DEBUG',False);,再次运行,在Runtime目录果然生成了一个类似文件,不过名称有点差别,是common~runtime.php,截图如下:
图1
打开这个common~runtime.php文件,我们可以看到内容是一行没有空格的代码,类似于压缩过的js代码,如下:
图2
注意环境改变之后这个缓存文件应该删除,不能把本地生成的编译缓存拷贝到其他服务器或者环境直接使用,只能再次生成。
编译缓存的内容包含:系统函数库,系统基础核心类库,扩展定义的核心行为类库,项目配置文件,项目函数文件。在项目入口文件中可以更改这个文件的生成目录例如:
define('RUNTIME_PATH','./App/temp/');
持此之外开可以弟子你故意缓存文件名,如下:
define('RUNTIME_FILE','./App/temp/runtime_cache.php');
我发现可以定义路径,但是文件名确没有如愿生成runtime_cache.php,始终是common~runtime.php。
我的修改如下:
define('RUNTIME_PATH','./temp/');
define('RUNTIME_FILE','./temp/runtime_cache.php');
最后得到结果如下截图:
图3
这里面生成了一系列的目录和文件,都是和编译缓存相关的。下面来替换框架入口文件为这个缓存文件看看能否正常运行,修改代码如下:
// 引入ThinkPHP入口文件
require './temp/common~runtime.php';
//require './ThinkPHP/ThinkPHP.php';
结果出现了错误,代码如下:
Fatal error: Class 'Think\Think' not found inD:\Serious\phpdev\thinkphp\temp\common~runtime.php on line 1
好吧,一开始只要知道有这么个东西就行了,不要玩这么高级的东西,先看看基本功能如何实现的吧。
2.调试模式
在项目入口文件中可以通过语句define('APP_DEBUG',True);来设置当前项目是否使用debug模式,待完成测试要部署到生产环境时再将这个值设置成False,就是部署模式。
使用调试模式给程序员带来以下便利:
错误信息会提交到日志记录中便于调试
关闭末班缓存,修改末班可以即时生效
记录sql日志,方便分析sql语句
关闭字段缓存,数据字段修改不受缓存影响
严格检查大小写,避免部署到linux上之后出现问题
上面很多特性都需要在配置文件中修改配置,下一篇文章中再做介绍。
在章节2.4项目编译中作者讲到使用thinkphp的项目在第一次运行的时候会吧核心需要加载的文件去掉空白和注释合并到一个文件中编译并缓存,第二次运行时直接载入编译缓存,这样省去一些IO开销,加快执行速度。并且在3.0以上的版本中海做了一些优化:
1.合并和兴编译缓存和项目编译缓存,不再生成两个缓存文件
2.直接对本地环境生成设置和常量定义减少环境判断
3.编译缓存可以直接替换框架入口甚至项目入口,甚至脱离框架独立运行
4.通过参数设置,生成的编译缓存载入外部的常量定义,便于产品用户定义
貌似高上大,后面继续讲在没有开启调试模式的情况下会在thinkphp\Application\Runtime目录下生成一个~runtime.php的文件,就是编译缓存文件。我实验了一下,在项目入口文件中有一句define('APP_DEBUG',True);修改成define('APP_DEBUG',False);,再次运行,在Runtime目录果然生成了一个类似文件,不过名称有点差别,是common~runtime.php,截图如下:
图1
打开这个common~runtime.php文件,我们可以看到内容是一行没有空格的代码,类似于压缩过的js代码,如下:
图2
注意环境改变之后这个缓存文件应该删除,不能把本地生成的编译缓存拷贝到其他服务器或者环境直接使用,只能再次生成。
编译缓存的内容包含:系统函数库,系统基础核心类库,扩展定义的核心行为类库,项目配置文件,项目函数文件。在项目入口文件中可以更改这个文件的生成目录例如:
define('RUNTIME_PATH','./App/temp/');
持此之外开可以弟子你故意缓存文件名,如下:
define('RUNTIME_FILE','./App/temp/runtime_cache.php');
我发现可以定义路径,但是文件名确没有如愿生成runtime_cache.php,始终是common~runtime.php。
我的修改如下:
define('RUNTIME_PATH','./temp/');
define('RUNTIME_FILE','./temp/runtime_cache.php');
最后得到结果如下截图:
图3
这里面生成了一系列的目录和文件,都是和编译缓存相关的。下面来替换框架入口文件为这个缓存文件看看能否正常运行,修改代码如下:
// 引入ThinkPHP入口文件
require './temp/common~runtime.php';
//require './ThinkPHP/ThinkPHP.php';
结果出现了错误,代码如下:
Fatal error: Class 'Think\Think' not found inD:\Serious\phpdev\thinkphp\temp\common~runtime.php on line 1
好吧,一开始只要知道有这么个东西就行了,不要玩这么高级的东西,先看看基本功能如何实现的吧。
2.调试模式
在项目入口文件中可以通过语句define('APP_DEBUG',True);来设置当前项目是否使用debug模式,待完成测试要部署到生产环境时再将这个值设置成False,就是部署模式。
使用调试模式给程序员带来以下便利:
错误信息会提交到日志记录中便于调试
关闭末班缓存,修改末班可以即时生效
记录sql日志,方便分析sql语句
关闭字段缓存,数据字段修改不受缓存影响
严格检查大小写,避免部署到linux上之后出现问题
上面很多特性都需要在配置文件中修改配置,下一篇文章中再做介绍。
相关文章推荐
- thinkphp学习笔记3—项目编译和调试模式
- Windbg学习笔记:源码模式调试
- 基础编程学习笔记一(程序的编译与调试)
- thinkphp3.2.3学习笔记——获取thinkphp以及创建项目
- Java虚拟机学习笔记-记录一次编译OpenJDK8与调试的过程
- thinkphp学习笔记6—url模式
- 转: live555学习笔记1—编译与调试环境的搭建
- C++ Template学习笔记之函数模板(5)——模板编译模式
- mjpg-streamer学习笔记10-----自己写客服端_编译调试
- Thinkphp学习笔记1-URL模式
- ThinkPHP 学习笔记 ( 一 ) 项目部署:应用部署方式与模块分组部署方式
- ant学习笔记(五)基于单元测试的j2se项目,包括编译、测试、打包、生成报告、上传ftp
- thinkphp学习笔记6—url模式
- pomelo学习笔记 (4) libpomelo 编译静态库加入cocos2d-x xcode 项目
- 『阿男的Gradle学习笔记』 *02*使用Gradle编译Java项目
- mini2440学习笔记 之01 配置ADS1.2编译调试程序(在sram中点亮LED)
- ant学习笔记(六)ant编译web项目,并打成war包,同时加入数据库操作
- SASS学习笔记1 —— 安装、编译和调试
- Thinkphp学习笔记之---Thinkphp一个站点多个项目部署
- ThinkPHP 学习笔记 2.MVC模式和URL访问