页面 Trace 信息
页面 Trace 信息如前文两幅截图所示,包括了运行时间、页面地址、请求协议、运行信息、会话ID、日志记录、加载的文件列表等信息。根据这些信息,在出现问题时有助于我们排解问题所在,也可以帮助我们优化系统。
运行信息
在上面的截图中,限于篇幅,运行信息并不完整。本例中完整的运行信息如下:
运行信息 : Process: 0.0873s ( Load:0.0093s Init:0.0200s Exec:0.0321s Template:0.0259s ) | DB :2 queries
0 writes | UseMem:1,907 kb | LoadFile:36 | CallFun:50,1322
该信息显示了页面整体运行的时间(加载、初始化、执行、模板等)、数据库查询与写入次数、使用的内存、加载的文件数目以及函数调用数目(50自定义,1322内置)。
提示:在调试模式和生产部署模式下,二者性能是有明显差异的。同样的环境,部署模式下,运行时间可能只有调试模式的 1/5 - 1/10 ,加载的文件也只有调试模式的一半左右。
日志记录
日志记录部分记录了系统运行的日志,其中比较有用的是 SQL 运行记录以及一些 PHP 的原生错误信息,会在这个地方显示出来。如果出现问题,可以根据这些信息来诊断问题所在。
加载文件
加载文件部分显示了框架加载的文件列表,可以根据加载文件列表初步判断,是否有需要加载的文件没有被加载(如:模型文件,项目函数文件等)。
Trace 信息模板定制
页面 Trace 信息的显示模板是可以定制的,默认位于 ThinkPHP 系统目录的 Tpl/page_trace.tpl文件。可以根据项目自身的需要定制,在项目配置或者调试配置里配置 TMPL_TRACE_FILE 参数即可:
'TMPL_TRACE_FILE'=> APP_PATH.'Tpl/page_trace.php'
提示:原文件是 tpl 后缀名的文件,建议更改为 php 后缀名的文件,ThinkPHP 默认的 Trace 模板代码如下:
页面Trace信息
<?php $_trace = trace();foreach ($_trace as $key=>$info){
echo $key.' : '.$info.'
';
}?>
可以根据需要对该模板进行定制。
Trace 信息显示定制
页面 Trace 信息也可以进行定制显示,可以在项目配置或调试配置文件里对相关参数进行配置,具体如下所示:
'SHOW_ADV_TIME' => true,// 是否显示详细的运行时间
'SHOW_DB_TIMES' => true,// 显示数据库查询和写入次数
'SHOW_CACHE_TIMES' => true,// 显示缓存操作次数
'SHOW_USE_MEM' => true,// 显示内存开销
'SHOW_LOAD_FILE' => true,// 显示加载文件数
'SHOW_FUN_TIMES' => true,// 显示函数调用次数
扩展 Trace 信息
如果需要扩展自己的 Trace 信息,有下面两种方式:
第一种方式:在当前项目的配置目录下面定义 trace.php 配置文件,例如:
return array(
'当前操作' => ACTION_NAME,
'当前模块' => MODULE_NAME,
);
定义完 trace.php 文件之后,系统会自动把这个定义合并到 Trace 信息里而输出:
当前操作 : index
当前模块 : Index
当然也可以对已经定义的 Trace 信息在 trace.php 文件里重新定义,重新定义后的信息会覆盖原来的信息:
'当前页面' => $_SERVER,
这种方式通常用于 Trace 项目的公共信息。
第二种方式:在操作里面使用 trace 方法来增加 Trace 信息,这种方式适用于 Trace 当前操作的特定信息:
$Dao = M('User');
$user_list = $Dao->select();
$last_sql = $Dao->getLastSql();
trace('执行SQL',$last_sql);
Trace 信息里而输出如下:
执行SQL : SELECT * FROM `my_user`
当前操作 : index
......
提示:这种方式的 Trace 信息总是显示在页面 Trace 信息的最开始,trace 方法也常用于断点调试。