腾讯云618限量抢购
  1. PHP基础教程
  2. PHP+MySQL数据库教程

ThinkPHP 调试模式页面 Trace 信息

最后更新:2012-10-13 18:07阅读:17272

页面 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 模板代码如下:

<div id="think_page_trace" style="background:white;margin:6px;font-size:14px;border:1px dashed silver;padding:8px">
<fieldset id="querybox" style="margin:5px;">
<legend style="color:gray;font-weight:bold">页面Trace信息</legend>
<div style="overflow:auto;height:300px;text-align:left;">
<?php $_trace = trace();foreach ($_trace as $key=>$info){
echo $key.' : '.$info.'<br/>';
}?>
</div>
</fieldset>
</div>

可以根据需要对该模板进行定制。

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<'REQUEST_URI'>,

这种方式通常用于 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 方法也常用于断点调试。


本章节内容共分 2 部分:
  1. 1. ThinkPHP 调试模式
  2. 2. ThinkPHP 调试模式页面 Trace 信息
腾讯云618限量抢购