<?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; /** * 系统行为扩展:运行时间信息显示 */ class ShowRuntimeBehavior { // 行为扩展的执行入口必须是run public function run(&$content) { if (C('SHOW_RUN_TIME')) { if (false !== strpos($content, '{__NORUNTIME__}')) { $content = str_replace('{__NORUNTIME__}', '', $content); } else { $runtime = $this->showTime(); if (strpos($content, '{__RUNTIME__}')) { $content = str_replace('{__RUNTIME__}', $runtime, $content); } else { $content .= $runtime; } } } else { $content = str_replace(array('{__NORUNTIME__}', '{__RUNTIME__}'), '', $content); } } /** * 显示运行时间、数据库操作、缓存次数、内存使用信息 * @access private * @return string */ private function showTime() { // 显示运行时间 G('beginTime', $GLOBALS['_beginTime']); G('viewEndTime'); $showTime = 'Process: ' . G('beginTime', 'viewEndTime') . 's '; if (C('SHOW_ADV_TIME')) { // 显示详细运行时间 $showTime .= '( Load:' . G('beginTime', 'loadTime') . 's Init:' . G('loadTime', 'initTime') . 's Exec:' . G('initTime', 'viewStartTime') . 's Template:' . G('viewStartTime', 'viewEndTime') . 's )'; } if (C('SHOW_DB_TIMES')) { // 显示数据库操作次数 $showTime .= ' | DB :' . N('db_query') . ' queries ' . N('db_write') . ' writes '; } if (C('SHOW_CACHE_TIMES')) { // 显示缓存读写次数 $showTime .= ' | Cache :' . N('cache_read') . ' gets ' . N('cache_write') . ' writes '; } if (MEMORY_LIMIT_ON && C('SHOW_USE_MEM')) { // 显示内存开销 $showTime .= ' | UseMem:' . number_format((memory_get_usage() - $GLOBALS['_startUseMems']) / 1024) . ' kb'; } if (C('SHOW_LOAD_FILE')) { $showTime .= ' | LoadFile:' . count(get_included_files()); } if (C('SHOW_FUN_TIMES')) { $fun = get_defined_functions(); $showTime .= ' | CallFun:' . count($fun['user']) . ',' . count($fun['internal']); } return $showTime; } }