🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 页面Trace [上一页](# "上一页")[下一页](# "下一页") 页面Trace功能是ThinkPHP提供给开发人员的一个用于开发调试的辅助手段。可以实时显示当前页面的操作的请求信息、运行情况、SQL执行、错误提示等,并支持自定义显示。 页面Trace功能无论是调试模式还是部署模式都有效,要开启页面Trace功能,需要在项目配置文件中设置:`'SHOW_PAGE_TRACE' =>true, // 显示页面Trace信息`系统默认的Trace信息包括:请求时间、当前页面、请求协议、运行信息、会话ID、日志记录和文件加载情况。默认的页面Trace的显示如图所示: ![](https://box.kancloud.cn/2015-08-27_55de6dceeeade.png) 新版的页面Trace信息显示中已经包含了运行状态时间显示,所以开启页面Trace功能后无需再开启运行时间显示了。我们的建议是运行时间显示功能用于部署模式需要的时候开启。**Trace页面定制** 页面Trace信息的显示模板是可以定制的,默认位于系统目录的Tpl/page_trace.tpl,可以根据项目自身的需要定制,更改TMPL_TRACE_FILE进行配置即可。 例如:`'TMPL_TRACE_FILE' => APP_PATH.'Public/trace.php'`关键的输出代码是:`<?php     $_trace = trace();      foreach ($_trace as $key=>$info){         echo $key.' : '.$info.'<br/>';     }`**Trace信息定制** 如果需要扩展自己的Trace信息,有下面几种方式: 第一种方式:在当前项目的配置目录下面定义 trace.php 文件,返回数组方式的定义,例如:`return array(     '当前页面'=>$_SERVER['PHP_SELF'],     '通信协议'=>$_SERVER['SERVER_PROTOCOL'],... );`在显示页面Trace信息的时候会把这个部分定义的信息合并到系统默认的Trace信息,所以不需要再添加系统默认的页面trace信息,这种方式通常用于Trace项目的公共信息。第二种方式:在Action方法里面使用trace方法来增加Trace信息,该部分可以用于系统的开发阶段调试。例如:`trace('执行时间',$runTime); trace('Name的值',$name); trace('GET变量',dump($_GET,false));`trace方法支持批量设置,例如:`$info['执行时间']=$runTime; $info['Name的值'] = $name; $info['GET变量']=dump($_GET,false);`trace($info);这种方式的trace信息显示在页面Trace信息的最开始。 ### 3.1版本的页面Trace 3.1版本对页面Trace功能进行了增强,更加方便开发过程中的调试,并接管了一部分日志功能。 ### 使用 页面Trace功能是ThinkPHP框架为开发人员精心设计的一个方便调试的内置行为扩展工具,经历了多个版本的改进后,由开始的具备简单页面信息到现在的全面调试支持。 页面Trace功能分为两个层面:一、是页面Trace的显示界面;二、是提供调试支持的trace方法。 要开启页面Trace显示界面,需要开启SHOW_PAGE_TRACE参数:`'SHOW_PAGE_TRACE'=>true`该配置参数默认关闭。开启后,页面的右下角会出现TP的logo,![](https://box.kancloud.cn/2015-08-27_55de6dcf0aee7.png) 点击即可打开页面Trace窗口。 ![](https://box.kancloud.cn/2015-08-27_55de6dcf1431f.png) 页面Trace框架有6个选项卡,分别是基本、文件、流程、错误、SQL和调试,点击不同的选项卡会切换到不同的Trace信息窗口。 基本:当前页面的基本摘要信息,例如执行时间、内存开销、文件加载数、查询次数等等。 文件:详细列出当前页面执行过程中加载的文件及其大小。 流程:会列出当前页面执行到的行为和相关流程(待完善)。 错误:当前页面执行过程中的一些错误信息,包括警告错误。 SQL:当前页面执行到的SQL语句信息。 调试:开发人员在程序中进行的调试输出。 要在调试选项卡中显示调试信息,则是通过trace方法,该方法可以加到应用程序的任意位置,调用格式如下: **trace('调试变量','显示标签')** 例如, trace($user,'用户信息'); $user变量可能是一个用户信息数组,那么该变量的值就会显示到页面Trace窗口的调试选项卡中。 页面Trace的选项卡是可以定制和扩展的,默认的配置为:`'TRACE_PAGE_TABS'=>array('base'=>'基本','file'=>'文件','think'=>'流程','error'=>'错误','sql'=>'SQL','debug'=>'调试')`也就是我们看到的默认情况下显示的选项卡,如果你希望增加新的选项卡:用户,则可以修改配置如下:`'TRACE_PAGE_TABS'=>array('base'=>'基本','file'=>'文件','think'=>'流程','error'=>'错误','sql'=>'SQL','debug'=>'调试','user'=>'用户')`我们把刚才的用户信息调试输出到用户选项卡,trace方法的用法修改如下: trace($user,'用户信息','user'); 第三个参数表示选项卡的标识,和我们在TRACE_PAGE_TABS中配置的对应。 默认情况下,页面Trace窗口显示的信息是不会保存的,如果希望保存这些trace信息,我们可以配置PAGE_TRACE_SAVE参数:`'PAGE_TRACE_SAVE'=>true`开启页面trace信息保存后,每次的页面Trace信息会以日志形式保存到项目的日志目录中,命名格式是: **当前日期_trace.log** 例如:`12-06-21_trace.log`如果不希望保存所有的选项卡的信息,可以设置需要保存的选项卡,例如:`'PAGE_TRACE_SAVE'=>array('base','file','sql');`设置后只会保存base、file和sql三个选项卡的信息。 3.1版本的trace方法不支持批量赋值操作。 [上一页](# "上一页")[下一页](# "下一页")