| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | 
							- <?php
 
- // +----------------------------------------------------------------------
 
- // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
 
- // +----------------------------------------------------------------------
 
- // | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
 
- // +----------------------------------------------------------------------
 
- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
 
- // +----------------------------------------------------------------------
 
- // | Author: liu21st <liu21st@gmail.com>
 
- // +----------------------------------------------------------------------
 
- namespace Behavior;
 
- use Think\Log;
 
- /**
 
-  * 系统行为扩展:页面Trace显示输出
 
-  */
 
- class ShowPageTraceBehavior {
 
-     protected $tracePageTabs =  array('BASE'=>'基本','FILE'=>'文件','INFO'=>'流程','ERR|NOTIC'=>'错误','SQL'=>'SQL','DEBUG'=>'调试');
 
-     // 行为扩展的执行入口必须是run
 
-     public function run(&$params){
 
-         if(!IS_AJAX && !IS_CLI && C('SHOW_PAGE_TRACE')) {
 
-             echo $this->showTrace();
 
-         }
 
-     }
 
-     /**
 
-      * 显示页面Trace信息
 
-      * @access private
 
-      */
 
-     private function showTrace() {
 
-          // 系统默认显示信息
 
-         $files  =  get_included_files();
 
-         $info   =   array();
 
-         foreach ($files as $key=>$file){
 
-             $info[] = $file.' ( '.number_format(filesize($file)/1024,2).' KB )';
 
-         }
 
-         $trace  =   array();
 
-         $base   =   array(
 
-             '请求信息'  =>  date('Y-m-d H:i:s',$_SERVER['REQUEST_TIME']).' '.$_SERVER['SERVER_PROTOCOL'].' '.$_SERVER['REQUEST_METHOD'].' : '.__SELF__,
 
-             '运行时间'  =>  $this->showTime(),
 
-             '吞吐率'    =>  number_format(1/G('beginTime','viewEndTime'),2).'req/s',
 
-             '内存开销'  =>  MEMORY_LIMIT_ON?number_format((memory_get_usage() - $GLOBALS['_startUseMems'])/1024,2).' kb':'不支持',
 
-             '查询信息'  =>  N('db_query').' queries '.N('db_write').' writes ',
 
-             '文件加载'  =>  count(get_included_files()),
 
-             '缓存信息'  =>  N('cache_read').' gets '.N('cache_write').' writes ',
 
-             '配置加载'  =>  count(C()),
 
-             '会话信息'  =>  'SESSION_ID='.session_id(),
 
-             );
 
-         // 读取应用定义的Trace文件
 
-         $traceFile  =   COMMON_PATH.'Conf/trace.php';
 
-         if(is_file($traceFile)) {
 
-             $base   =   array_merge($base,include $traceFile);
 
-         }
 
-         $debug  =   trace();
 
-         $tabs   =   C('TRACE_PAGE_TABS',null,$this->tracePageTabs);
 
-         foreach ($tabs as $name=>$title){
 
-             switch(strtoupper($name)) {
 
-                 case 'BASE':// 基本信息
 
-                     $trace[$title]  =   $base;
 
-                     break;
 
-                 case 'FILE': // 文件信息
 
-                     $trace[$title]  =   $info;
 
-                     break;
 
-                 default:// 调试信息
 
-                     $name       =   strtoupper($name);
 
-                     if(strpos($name,'|')) {// 多组信息
 
-                         $names  =   explode('|',$name);
 
-                         $result =   array();
 
-                         foreach($names as $name){
 
-                             $result   +=   isset($debug[$name])?$debug[$name]:array();
 
-                         }
 
-                         $trace[$title]  =   $result;
 
-                     }else{
 
-                         $trace[$title]  =   isset($debug[$name])?$debug[$name]:'';
 
-                     }
 
-             }
 
-         }
 
-         if($save = C('PAGE_TRACE_SAVE')) { // 保存页面Trace日志
 
-             if(is_array($save)) {// 选择选项卡保存
 
-                 $tabs   =   C('TRACE_PAGE_TABS',null,$this->tracePageTabs);
 
-                 $array  =   array();
 
-                 foreach ($save as $tab){
 
-                     $array[] =   $tabs[$tab];
 
-                 }
 
-             }
 
-             $content    =   date('[ c ]').' '.get_client_ip().' '.$_SERVER['REQUEST_URI']."\r\n";
 
-             foreach ($trace as $key=>$val){
 
-                 if(!isset($array) || in_array_case($key,$array)) {
 
-                     $content    .=  '[ '.$key." ]\r\n";
 
-                     if(is_array($val)) {
 
-                         foreach ($val as $k=>$v){
 
-                             $content .= (!is_numeric($k)?$k.':':'').print_r($v,true)."\r\n";
 
-                         }
 
-                     }else{
 
-                         $content .= print_r($val,true)."\r\n";
 
-                     }
 
-                     $content .= "\r\n";
 
-                 }
 
-             }
 
-             error_log(str_replace('<br/>',"\r\n",$content), 3,C('LOG_PATH').date('y_m_d').'_trace.log');
 
-         }
 
-         unset($files,$info,$base);
 
-         // 调用Trace页面模板
 
-         ob_start();
 
-         include C('TMPL_TRACE_FILE')?C('TMPL_TRACE_FILE'):THINK_PATH.'Tpl/page_trace.tpl';
 
-         return ob_get_clean();
 
-     }
 
-     /**
 
-      * 获取运行时间
 
-      */
 
-     private function showTime() {
 
-         // 显示运行时间
 
-         G('beginTime',$GLOBALS['_beginTime']);
 
-         G('viewEndTime');
 
-         // 显示详细运行时间
 
-         return G('beginTime','viewEndTime').'s ( Load:'.G('beginTime','loadTime').'s Init:'.G('loadTime','initTime').'s Exec:'.G('initTime','viewStartTime').'s Template:'.G('viewStartTime','viewEndTime').'s )';
 
-     }
 
- }
 
 
  |